C++ 容器的assign()函数

转载:https://blog.csdn.net/qq_23851075/article/details/52396649

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

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

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

原文地址:https://www.cnblogs.com/Toya/p/13952397.html