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

时间:2015-04-09 13:55:53

标签: vector insert iterator return

我制作了一些代码来研究向量,并且以某种方式无法理解insert的返回值。

https://ideone.com/KckxbU

我想当插入myvector时,返回迭代器应该是

  200 100 100 100
(here)

并在此代码之后

myvector.insert(it, 2, 300);

myvector应该像

200 300 300 100 100 100

但是包含

300 300 200 100 100 100

为什么?

1 个答案:

答案 0 :(得分:1)

文档清楚地指出新元素是插入在输入iterator参数指向的位置。元素不会在提供的iterator之后立即插入到位置,这正是您所期待的。

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

  

职位

     

插入新元素的向量中的位置。   iterator是一个成员类型,定义为随机访问迭代器类型   指向元素。

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

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

所以

100 100 100
|||

变为

200 100 100 100
|||

来自iterator的返回insert

  

指向第一个新插入元素的迭代器。

因此it仍然指向vector的第一个位置。

然后添加两个值为300的整数

myvector.insert(it, 2, 300);

所以向量包含

300 300 200 100 100 100
|||

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