C++ 容器的assign()函数

  • Post author:
  • Post category:其他


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



版权声明:本文为qq_23851075原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。