顺序容器操作: 为顺序容器赋值
2023年12月23日 2023年12月23日
assign
只用于顺序容器, 不适用于关联容器
会导致迭代器, 引用和指针失效
顺序容器 | 支持assign操作 |
---|---|
array | X |
vector(string) | O |
deque | O |
list | O |
forward_list | O |
1seq.assign(b, e); // 使用的迭代器不能指向自身元素 2 3seq.assign(il); 4 5seq.assign(n, t);
使用迭代器范围进行赋值
1list<string> names; 2vector<const char *> oldstyle; 3 4names = oldstyle; // 错误:容器类型不匹配 5 6names.assign(oldstype.cbegin(), oldstype.cend());
拥有若干个相同元素
1list<string> slist1(1); 2slist1.assign(10, "Hiya!");
和赋值运算符的区别
赋值运算符要求两个运算对象的类型相同,元素类型也相同
assign(b, e)允许容器类型不同但相容. 由于不涉及另一个容器, 迭代器本身只要求元素类型相容