六一的部落格


关关难过关关过,前路漫漫亦灿灿。



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)允许容器类型不同但相容. 由于不涉及另一个容器, 迭代器本身只要求元素类型相容


顺序容器操作: 为顺序容器赋值


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)允许容器类型不同但相容. 由于不涉及另一个容器, 迭代器本身只要求元素类型相容