我制作了一些代码来研究向量,并且以某种方式无法理解insert的返回值。
我想当插入myvector时,返回迭代器应该是
200 100 100 100
(here)
并在此代码之后
myvector.insert(it, 2, 300);
myvector应该像
200 300 300 100 100 100
但是包含
300 300 200 100 100 100
为什么?
答案 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
设置为第一个新插入元素的位置,这仍然是向量的第一个元素。