C++简单问题(高手进急)

#include<iostream>#include<vector>#include<string>usingnamespacestd;intmain(){vector<... #include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
vector<string> svec;
string str;
cout<<"Enter string:(Ctrl+Z to enl)"<<endl;
while(cin>>str)
svec.push_back(str);
char **parr=new char*[svec.size()];
size_t ix=0;
for(vector<string>::iterator iter=svec.begin();
iter!=svec.end();++iter,++ix){
char *p=new char[(*iter).size()+1];
strcpy(p,(*iter).c_str());
parr[ix]=p;
}
for(ix=0;ix!=svec.size();++ix)
delete [] parr[ix];
delete [] parr;
return 0;
}

//////////////////////////////////////////////////
char *p=new char[(*iter).size()+1];这句话(*iter)指针有什么用,size()+1为什么要加1
strcpy(p,(*iter).c_str());这句话(*iter)又为什么要用指针。
展开
 我来答
yuner0513
2009-08-22 · 超过59用户采纳过TA的回答
知道答主
回答量:436
采纳率:0%
帮助的人:0
展开全部
for(vector<string>::iterator iter=svec.begin();
你只须明白这句话的意思就可以了 就知道*iter是什么意思了
char *p=new char[(*iter).size()+1]; 在这是内存分配
容器第1个字符的 大小加1;
strcpy(p,(*iter).c_str()); 至于为什么要用指针 你就应该多去看点书吧
迭代器是遍历容器
那么*iter指向容器的第一个元素 把他赋值给p ++iter ++ix 也就起遍历作用
alaolao
2009-08-22 · TA获得超过794个赞
知道小有建树答主
回答量:1420
采纳率:0%
帮助的人:0
展开全部
这两处都不是指针
别看到星号就认为是指针
这两处都实际是调用了iter的operator*函数.
别乱讲.还是好好看程序.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式