2010-01-22 71 views
4

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

除此之外,还有什么理由让一个优先于另一个呢? 或者换句话说,是否有任何理由使用assign而不是insert。

+2

也许你可以通过问这个来解决这个问题:“在空STL向量**上分配vs插入**,有什么区别?” – 2010-01-22 17:59:01

+0

够公平的。这就是我想到的。 – Pradyot 2010-01-22 18:01:16

回答

4

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

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

6

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

3

assign()将吹掉已在vector中的任何东西,然后添加新的元素。 insert()不会触及vector中的任何元素。

除此之外,如果您正在修改的vector开始为空,则几乎没有区别。