【发布时间】:2016-07-14 19:05:23
【问题描述】:
我有一个向量。我想要做的是在向量的第一个索引处存储一个值。但是,这个值是针对错误的,所以我想引用这个值,比如vector_ [-1]。我该怎么做?
我想出了一个解决方案。 我正在做的是创建一个新向量并将新向量分配给这个向量。
vector_.resize(required_size+1);
vector_ = std::vector<T> (vector_.begin()+1,vector_.end());
此时我可以合法使用vector_[-1]吗?如果没有,请帮助我解决其他问题。
编辑
我找到了解决方法。虽然它不是带有负索引的向量,但我使用的是指向向量第二个成员的指针,所以当我执行ptr[-1] 时,它指向向量的第一个元素。
【问题讨论】:
-
不,这是错误的。也许将它存储在其他地方?
-
无法用负索引索引未更改的
std::vector。您需要创建自己的课程,可能在内部使用std::vector。 -
向量的索引本质上是一个内存偏移量。所以 -1 是无效的。在我看来,您的索引具有特殊含义,更像是键。也许 std::map 更适合您尝试做的事情。
-
vector_[-1]实际上是指vector[std::numeric_limits<std::vector::size_type>::max()],因为std::vector::size_type是无符号的。您将永远无法在std::vector中获得负索引 -
你不能改变 vector 在内部的作用。这就是内部的意思。最好的办法是创建自己的类,该类在内部将索引转换为向量所期望的。
标签: c++ vector indexing stl c++-standard-library