我理解2个操作的语义, 分配 - 在使用提供的值进行替换之前的分配。 insert - 在指定位置插入值(如果需要,分配新内存)。stl向量分配vs插入
除此之外,还有什么理由让一个优先于另一个呢? 或者换句话说,是否有任何理由使用assign而不是insert。
我理解2个操作的语义, 分配 - 在使用提供的值进行替换之前的分配。 insert - 在指定位置插入值(如果需要,分配新内存)。stl向量分配vs插入
除此之外,还有什么理由让一个优先于另一个呢? 或者换句话说,是否有任何理由使用assign而不是insert。
如果您希望调用assign
的语义,请调用assign - 如果您希望调用insert
的语义,请调用insert。它们不可互换。
至于在空载体上调用它们,唯一的区别是当你调用assign
时,你不需要提供一个迭代器来插入。可能会有性能差异,但这是特定于实现的,几乎可以忽略。
assign
和insert
只有在向量为空时才是等效的。如果矢量已经是空的,那么最好使用assign
,因为insert
会错误地向读者暗示存在要保留的元素。
assign()
将吹掉已在vector
中的任何东西,然后添加新的元素。 insert()
不会触及vector
中的任何元素。
除此之外,如果您正在修改的vector
开始为空,则几乎没有区别。
也许你可以通过问这个来解决这个问题:“在空STL向量**上分配vs插入**,有什么区别?” – 2010-01-22 17:59:01
够公平的。这就是我想到的。 – Pradyot 2010-01-22 18:01:16