我想在位置-1的矢量对象中插入一个int值,即:

vector<int> v;
int p = 12;
vector<int>::iterator it = -1;
v.insert(it,1,p);


在c ++中有可能吗?还是一定永远是积极的?

最佳答案

使用insert方法的插入总是在指定的迭代器之前进行,因此要在第一个位置(即,当前第一个元素的*之前*)插入:

v.insert(v.begin(), p);


(如果仅插入单个元素,则可以省略count参数)。

可以使用end()迭代器在最后一个位置插入

v.insert(v.end(), p);


或者,对于矢量,使用push_back()

v.push_back(p);


对于访问向量,您只能使用非负索引,即v[-1]无效。

另外,您不能为迭代器分配整数,这主要是因为迭代器封装了它所引用的位置和容器。如果要为指定位置“构造”迭代器,请使用类似以下的附加内容:

std::vector<int> it = v.begin() + index;


(请注意,除了迭代器外,迭代器仅适用于所谓的随机访问迭代器,因此取决于容器类型。)

10-07 19:11
查看更多