转载: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插入元素会使得所有指向容器的迭代器,引用和指针失效。