在C ++向量中插入

时间:2014-03-29 13:28:03

标签: c++

我想在向量的开头插入一个位集。我很难理解如何做到这一点。以下是我认为我可以做到的:

keyRej.insert(x, inpSeq[0]);

我不知道该放什么代替x?

2 个答案:

答案 0 :(得分:5)

  

我不知道在x的位置放什么?

要插入的位置的迭代器:

keyRej.insert(keyRej.begin(), inpSeq[0]);

从语义上讲,insert元素在迭代器作为第一个参数传递之前进行。但这将导致向量的所有元素必须在一个位置上移动,并且还可能导致向量的内部数据存储块的重新分配。它还意味着所有迭代器或对向量元素的引用都是无效的。

有关详细信息,请参阅std::vector::insert的此参考。

请注意,有一些容器,例如std::deque,前面的附加元素很便宜,并且保留了引用(但不是迭代器)的有效性。

答案 1 :(得分:3)

x是根据您可能阅读的文档here的迭代器,新对象就在它之前插入。

keyRej.insert(keyRej.begin(), inpSeq[0]);