C++ 容器赋值运算符
▲ 《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 会导致迭代器、引用和指针失效。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2022-09-27 享元模式 Flyweight
2022-09-27 单例模式 Singleton
2022-09-27 构建器模式 Builder
2021-09-27 C# 接口类型
2021-09-27 C# 小数位控制
2021-09-27 C# 自定义鼠标样式 1
2021-09-27 C# 自定义鼠标样式