▲ 《C++ Primer》 P302
assign
list<string> names;
vector<const char *> old_c_str{ "娃哈哈", "孟菲斯", "Hello Wold!" };
names.assign(old_c_str.cbegin(), old_c_str.cend()); // 这个可以,拷贝构造
for (const auto s : names)
{
cout << s << '\n';
}
输出:
娃哈哈
孟菲斯
Hello Wold!
swap
swap 操作交换两个相同类型容器的内容。调用 swap 之后,两个容器中的元素将会交换:
vector<string> svecl(10); //10个元素的vector
vector<string> svec2(24); //24个元素的vector
swap(svecl,svec2);
调用swap后,svec1 将包含24个string元素, svec2 将包含10个string.除array外,交换两个容器内容的操作保证会很快 -- 元素本身并未交换,swap只是交换了两个容器的内部数据结构。
除array外,swap不对任何元素进行拷贝、删除或插入操作,因此可以保证在常数时间内完成。
Note:
元素不会被移动的事实意味着,除string外,指向容器的迭代器、引用和指针在swap 操作之后都不会失效。它们仍指向 swap 操作之前所指向的那些元素。但是,在 swap 之后,这些元素已经属于不同的容器了。例如,假定 iter 在 swap 之前指向 svec1[3] 的 string, 那么在 swap 之后它指向 svec2[3] 的元素。与其他容器不同,对一个 string 调用 swap 会导致迭代器、引用和指针失效。
标签:容器,string,svec2,元素,C++,运算符,vector,swap,赋值 From: https://www.cnblogs.com/huvjie/p/18436678