C++ 容器的assign()函数

来源:互联网 发布:解决mac下迅雷慢 编辑:程序博客网 时间:2024/06/15 18:35

STL中不同容器之间是不能直接赋值的,assign()可以实现不同容器但相容的类型赋值,如:

list<string> names;vector<const char*> oldstyle = { "I","love","you" };//names = oldstyle;错误!不同的类型不能执行"="操作names.assign(oldstyle.cbegin(), oldstyle.cend());list<string>::iterator it;for (auto it = names.begin(); names.begin() != names.end(); it++)        cout << *it << " ";


有两点要注意:
1.赋值运算会导致指向左边容器内部的迭代器、引用和指针失效,而swap操作将容器内容交换不会导致指向容器的迭代器、引用和指针失效(容器类型为array和string的情况除外).
2.向一个vector、string或deque插入元素会使得所有指向容器的迭代器,引用和指针失效。

0 0
原创粉丝点击