今天看了数组和指针,虽说之前学c语言的的时候学过,但是今天还是感觉看的挺吃力的。做了几道章后习题,那出来说说问题。
它的题目要求是读入一段string型的数据储存在vector中,把vector的对象复制给字符型指针数组,为vector中每个元素创建一个新的字符型数组,并把vector的元素复制到字符数组中。最后释放内存。
其实就是训练一下这两天学的内容
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main ()
{
vector<string>ivec;
string s;
while(cin>>s)
{
ivec.push_back(s);
}
char **str_p=new char *[ivec.size()];
int index=0;
for(vector<string>::iterator x1=ivec.begin();x1!=ivec.end();index++,x1++)
{
char *p=new char[(*x1).size()+1];
strcpy(p,(*x1).c_str());
str_p[index]=p;
}
for(vector<string>::iterator x2=ivec.begin();x2!=ivec.end();++x2)
{
cout<<*x2<<endl;
}
for(index=0;index<ivec.size();index++)
{
cout<<ivec[index]<<endl;
}
for(index=0;index<ivec.size();index++)
{
delete []str_p[index];
}
delete [] str_p;
system("pause");
}
在把vector的对象复制给字符数组过程中定义了一个双重指针,这个双重指针的长度就是ivec的元素个数。其实vector<string>类型就可以看做是二维数组,str_p存放每个string地址,p存放每个string中的元素的地址。开始老是想不出来,怎么把vector<string>放到字符数组中去,后来参考了下答案(惭愧啊)才写了出来。看的时候以为看懂了,用起来却是缚手缚脚,显得很死板。
今天还看了一下建辉做的c语言程序设计和当初的打作业,感觉他做的东西很全面,有很多想法,我的和他的比起来就是一坨shi,跟他要了代码,明天好好看一下,把当时没做出来的权限学习下,一定要弄懂。觉得学习效率很低,要快马加鞭啊。
回去了~