在C++向量中插入

Moh*_*med 1 c++

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

keyRej.insert(x, inpSeq[0]);
Run Code Online (Sandbox Code Playgroud)

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

jua*_*nza 5

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

要插入的位置的迭代器:

keyRej.insert(keyRej.begin(), inpSeq[0]);
Run Code Online (Sandbox Code Playgroud)

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

有关std::vector::insert更多信息,请参阅此参考.

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

  • 如果必须经常进行此操作,最好更改代码以在末尾追加(如果追加/擦除总是在向量的同一侧完成)或移动到更好的数据结构两端插入的性能特征(如双端队列). (2认同)