c ++向量位置设置为1而不是0

时间:2013-10-15 08:22:28

标签: c++

我对矢量位置有疑问。我们知道,如果我们要将某些东西存储到矢量中。它将开始在第0位存储第一个元素。

所以例如我的载体中有3件事

vector position 0 ->itemOne  
vector position 1 ->itemTwo
vector position 2 ->itemThree.

无论如何我可以做第一个元素存储在向量位置1而不是位置0?

4 个答案:

答案 0 :(得分:5)

你可以制作一个虚拟的第一个元素。但请不要,每个使用C ++的人都希望向量基于0。

如果这不是你的想法,那么不,没有办法。只是因为使用索引0访问第一个位置的元素。因此,position 1您的代表vec[0]。只是一个名字。

或切换到Pascal。

答案 1 :(得分:3)

您可以在向量周围创建包装并覆盖[]运算符。但是我相信这是非常不可取的,因为任何理智的开发人员都会被你的代码误导。

答案 2 :(得分:1)

是。您可以将虚拟对象插入位置0.然后将实际值插入到位置。 当然,您希望使用“人性化索引器”进行迭代和访问。 这将最后一次输入失败。 这种语言基于零索引。

答案 3 :(得分:0)

Vector只是一个数组,因此它是0索引的。当然你可以在位置0存储虚拟数据,但我建议你从你想要的位置减去1 或者,如果你能找到一些使用1索引向量的库(包装器),如:
 https://www.rosettacommons.org/manuals/archive/rosetta3.4_user_guide/d3/dd5/classutility_1_1vector1.html
或者您可以简单地创建所需的类,该类可以通过以1开头的索引访问所需元素。