我想在位置-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;
(请注意,除了迭代器外,迭代器仅适用于所谓的随机访问迭代器,因此取决于容器类型。)