stl vector assign vs insert

Pra*_*yot 4 c++ stl vector

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

除此之外,还有什么理由可以让一个人在另一个人之间吗?换句话说,是否有任何理由使用assign而不是insert.

Emi*_*ier 6

assign并且insert仅在向量为空时才等效.如果向量已经为空,那么最好使用它assign,因为insert会错误地暗示读者存在要保留的现有元素.


Joe*_*oeG 5

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

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


Joh*_*ing 5

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

除此之外,如果vector您正在修改的内容一开始是空的,则没有什么区别。