向量插入方法的 return 迭代器位置

vector insert method's return iterator position

我写了一些代码来研究vector,不知何故无法理解insert的return值。

https://ideone.com/KckxbU

我认为当插入 myvector 时,return 迭代器应该是

  200 100 100 100
(here)

在此代码之后

myvector.insert(it, 2, 300);

myvector 应该像

200 300 300 100 100 100

但矢量包含

300 300 200 100 100 100

为什么?

文档明确指出,新元素插入到输入参数iterator指向的位置。元素不会立即插入到提供的 iterator 之后的位置,这似乎是您所期望的。

http://www.cplusplus.com/reference/vector/vector/insert/

position

Position in the vector where the new elements are inserted. iterator is a member type, defined as a random access iterator type that points to elements.

您的代码从 vector 的第一个位置开始插入一个值为 200 的整数。所有其他元素都向上移动一个位置。

it = myvector.begin();
it = myvector.insert(it, 200);

所以

100 100 100
|||

变成

200 100 100 100
|||

来自 insert 的 return iterator

An iterator that points to the first of the newly inserted elements.

所以it仍然指向vector的第一个位置。

然后将两个整数值相加 300

myvector.insert(it, 2, 300);

所以向量包含

300 300 200 100 100 100
|||

it设置为第一个新插入元素的位置,它仍然是向量的第一个元素。