向量插入方法的 return 迭代器位置
vector insert method's return iterator position
我写了一些代码来研究vector,不知何故无法理解insert的return值。
我认为当插入 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
设置为第一个新插入元素的位置,它仍然是向量的第一个元素。
我写了一些代码来研究vector,不知何故无法理解insert的return值。
我认为当插入 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
设置为第一个新插入元素的位置,它仍然是向量的第一个元素。