向量中的位置值

时间:2012-01-18 13:44:21

标签: c++ vector

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

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

可以在c ++中使用吗?还是一定是积极的?

5 个答案:

答案 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;

只是一个例子。指数不能为负,因为它是一个位置。负面立场不存在。