《 C++ Primer 》 P302
赋值运算符要求左边和右边的运算对象具有相同的类型。它将右边运算对象中所有元素拷贝到左边运算对象中。顺序容器(arra y 除外)还定义了一个名为 assign 的成员,允许我们从一个不同但相容的类型赋值,或者从容器的一个子序列赋值。assign 操作用参数所指定的元素(的拷贝)替换左边容器中的所有元素。例如,我们可以用 assgin 实现将一个 vector 中的一段 char *值赋予一个 list 中的 string :
list<string>names;
vector<const char*>oldstyle;
names=oldstyle;//错误:容器类型不匹配
//正确:可以将 const char *转换为 string
names.assign(oldstyle.cbegin(),oldstyle.cend());
我在网上找到了两个相关说明。不知道哪一个才是上文“相容的类型”的准确描述?
csdn 的描述比较清晰简单: https://blog.csdn.net/qq_66726657/article/details/131076899
cppreference.com 的介绍比较复杂抽象,其中还包含许多陌生概念: https://zh.cppreference.com/w/c/language/types#.E5.85.BC.E5.AE.B9.E7.B1.BB.E5.9E.8B
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.