我想在位置-1的向量对象中插入一个int值,即:
vector<int> v;
int p = 12;
vector<int>::iterator it = -1;
v.insert(it,1,p);
可以在c ++中使用吗?还是一定是积极的?
答案 0 :(得分:2)
这是不可能的。 vector
- 索引必须大于或等于0.如果您想要负指数,则必须使用std::map
。
答案 1 :(得分:2)
使用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;
(注意,对迭代器的添加仅适用于所谓的随机访问迭代器,因此它取决于容器类型。)
答案 2 :(得分:1)
矢量索引从零开始。因此没有“位置-1”这样的东西。
如果要在向量的开头插入元素,请使用v.begin()
作为插入位置。
答案 3 :(得分:1)
向量表示索引和索引不能为负数。
答案 4 :(得分:0)
总是积极的。你这样做:
v[2] = 5;
只是一个例子。指数不能为负,因为它是一个位置。负面立场不存在。