stl vector assign vs insert

时间:2010-01-22 17:32:59

标签: c++ stl vector

我理解2个操作的语义, 在使用提供的值替换之前进行分配。 insert - 在指定位置插入值(如有必要,分配新内存)。

除此之外,有没有理由让一个人在另一个人之间? 换句话说,有没有理由使用assign而不是insert。

4 个答案:

答案 0 :(得分:6)

如果向量为空,则

assigninsert仅相等。如果向量已经为空,那么最好使用assign,因为insert会错误地暗示读者存在要保留的现有元素。

答案 1 :(得分:4)

如果您希望调用assign的语义,请调用assign - 如果您希望调用insert的语义,请调用insert。它们不可互换。

至于在空向量上调用它们,唯一的区别是当你调用assign时不需要提供插入的迭代器。可能存在性能差异,但这是特定的实现,几乎肯定是可以忽略不计的。

答案 2 :(得分:3)

assign()将吹走vector中已有的所有内容,然后添加新元素。 insert()不会触及vector中已有的任何元素。

除此之外,如果您要修改的vector空出来,则没有什么区别。

答案 3 :(得分:1)

insert()将元素插入特定位置。它可以是单个值,也可以是使用第一个和最后一个迭代器的多个值。就像在位置前面插入更多元素一样。

assign()只会根据输入参数“ InputIterator first和InputIterator last”从开始到结束分配值。这将删除所有现有元素,并根据参数中提供的范围为其填充新值。