我对矢量位置有疑问。我们知道,如果我们要将某些东西存储到矢量中。它将开始在第0位存储第一个元素。
所以例如我的载体中有3件事
vector position 0 ->itemOne
vector position 1 ->itemTwo
vector position 2 ->itemThree.
无论如何我可以做第一个元素存储在向量位置1而不是位置0?
答案 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开头的索引访问所需元素。