预备知识:
1.c.assign(b,e):重新设置c的元素:将b和e标记的范围内的所有元素复制到c中。b和e必须不是指向c中元素的迭代器;
2.c.aggign(n,t):将容器c重新设置为存储n个值为t的元素;
3.assign操作首先删除容器中所有的元素,然后将其参数所指定的新元素插入到该容器中。如果在不同(或相同)类型的容器内,元素类型不相同但是相互兼容,则其赋值运算必须使用assign函数。例如,可通过assign操作实现将vector容器中一段char*类型的元素赋给string类型的list容器;
4.assign操作使左操作数容器的所有迭代器失效。
下面的程序将一个list容器中的所有元素赋值给一个vector容器,其中list容器中存储的是指向c风格字符串的char*指针,而vector容器的元素则是string类型(《C++ Primier》习题9.28)。
程序清单:
#include <iostream>
#include <vector>
#include <list>
#include <string>
using namespace std;
int main(int argc,char *argv[])
{
char *sa[] = {"Yulingui","zhouyujia","gouyongpan","sunlin"};
list<char*> clist(sa,sa+4);
vector<string> svec;
string str;
/*将list对象中的所有元素赋值给vector对象*/
svec.assign(clist.begin(),clist.end());
/*输出list对象中的所有元素*/
for (list<char*>::iterator lit=clist.begin();lit!=clist.end();
++lit)
{
cout<<*lit<<" ";
}
cout<<endl;
/*输出vector对象中的所有元素*/
for(vector<string>::iterator vit=svec.begin();vit!=svec.end();
++vit)
{
cout<<*vit<<" ";
}
cout<<endl;
return 0;
}
|
编译运行程序后,输出结果:
Yulingui zhouyujia gouyongpan sunlin
Yulingui zhouyujia gouyongpan sunlin
阅读(4203) | 评论(1) | 转发(0) |