C++ Primer习题9.28

int  main( )
{
/*编写程序将一个list容器的所有元素赋值给一个vector容器
* 其中list容器中存储的是指向C风格字符串的 char* 指针
* 而vector容器的元素则是string类型
*
*/
//a[ ]是一个指针数组,每个元素存放指向一个字符串的指针
char *a[ ] ={"go", "fucking", "shit!"};
//a[i]是指向字符串的指针,输出a[i]将输出第a[i]指向的字符串
cout<<a[0]<<""<<a[1]<<""<<a[2]<<endl;
// a+i 是指向 a[i] 的指针,输出 a+i 将输出a[i]的地址
cout<<a<<""<<a+1<<""<<a+2<<endl;
// *(a+i)等效于a[i]
cout<<*a<<""<<*(a+1)<<""<<*(a+2)<<endl;

//该语句将a 到 a+3 标记的范围的值复制给clist容器
//即将 *a ,*(a+1),*(a+2) (亦即a[0], a[1], a[2])复制给clist
//因此 clist存放的是指向字符串的指针
list<char*> clist(a, a+3);

vector<string> svec;
//将list容器的所有元素赋值给一个vector容器
//由于clist的元素类型是指向字符串的指针
//而 svec的元素类型是 string,因此
//该语句将clist中指针所指向的字符串复制给svec
svec.assign(clist.begin(), clist.end());

//输出 list 的所有元素
//由于解引用 *citer得到 a[i], 因此也将输出a[i]指向的字符串
for(list<char*>::iterator citer=clist.begin(); citer!=clist.end(); ++citer )
cout<<*citer<<"";

//输出vector 的所有元素
for(vector<string>::iterator siter=svec.begin(); siter!=svec.end(); ++siter)
cout<<*siter<<"";
return 0
}
posted @ 2011-11-22 13:05  oceany  阅读(243)  评论(0编辑  收藏  举报