我理解2个操作的语义, 在使用提供的值替换之前进行分配。 insert - 在指定位置插入值(如有必要,分配新内存)。
除此之外,有没有理由让一个人在另一个人之间? 换句话说,有没有理由使用assign而不是insert。
答案 0 :(得分:6)
assign
和insert
仅相等。如果向量已经为空,那么最好使用assign
,因为insert
会错误地暗示读者存在要保留的现有元素。
答案 1 :(得分:4)
如果您希望调用assign
的语义,请调用assign - 如果您希望调用insert
的语义,请调用insert。它们不可互换。
至于在空向量上调用它们,唯一的区别是当你调用assign
时不需要提供插入的迭代器。可能存在性能差异,但这是特定的实现,几乎肯定是可以忽略不计的。
答案 2 :(得分:3)
assign()
将吹走vector
中已有的所有内容,然后添加新元素。 insert()
不会触及vector
中已有的任何元素。
除此之外,如果您要修改的vector
空出来,则没有什么区别。
答案 3 :(得分:1)
insert()将元素插入特定位置。它可以是单个值,也可以是使用第一个和最后一个迭代器的多个值。就像在位置前面插入更多元素一样。
assign()只会根据输入参数“ InputIterator first和InputIterator last”从开始到结束分配值。这将删除所有现有元素,并根据参数中提供的范围为其填充新值。