【发布时间】:2009-11-03 15:23:37
【问题描述】:
我希望能够在向量的中间(或其他位置)插入一个元素,而不会覆盖现有元素。
假设我的向量有 3 6 9 10,我想在 6 之后插入 7。应该如何在不引起问题的情况下完成?这是非常罕见的操作,因此效率在这里不是问题。此外,此时,我无法切换到另一个适合在中间插入的容器(例如:std::list)。
向量中的std::insert 会做我想要的吗?怎么样?
谢谢
【问题讨论】:
-
您不能在向量的“中间”插入元素而不覆盖插入位置之后的所有元素:它们将被移动到向量的末尾以为新元素留出空间(元素 n 将在 n+1 处复制,元素 n-1 将在 n 处复制,依此类推,从而覆盖现有元素。
-
这当然意味着任何现有的迭代器和指向向量的指针都将失效(因为它们可能是在普通的旧 push_back() 之后)。