我有一个关于矢量位置的问题。正如我们所知,如果我们要将某些东西存储到向量中。它将开始在位置 0 存储第一个元素。
所以例如我的向量中有 3 个东西
vector position 0 ->itemOne
vector position 1 ->itemTwo
vector position 2 ->itemThree.
有没有办法让第一个元素存储在向量位置 1 而不是位置 0?
我有一个关于矢量位置的问题。正如我们所知,如果我们要将某些东西存储到向量中。它将开始在位置 0 存储第一个元素。
所以例如我的向量中有 3 个东西
vector position 0 ->itemOne
vector position 1 ->itemTwo
vector position 2 ->itemThree.
有没有办法让第一个元素存储在向量位置 1 而不是位置 0?
您可以制作一个虚拟的第一个元素。但是请不要,每个使用 C++ 的人都希望向量是从 0 开始的。
如果这不是你的想法,那么不,没有办法。仅仅因为第一个位置的元素是使用索引访问的0
。你position 1
的代表也是如此vec[0]
。只是一个名字。
或者切换到帕斯卡。
您可以围绕向量创建一个包装器并覆盖该[]
运算符。但是我认为这是非常不可取的,因为任何理智的开发人员都会被您的代码误导。
是的。您可以在位置 0 中插入一个虚拟对象。稍后再插入一个真实值。当然,您想使用“人工索引器”迭代 AND 访问。对于最后一个条目,这通常会失败。这种语言是基于零索引的。
Vector 只是一个数组,所以它是 0-indexed。当然你可以在位置 0 上存储一个虚拟数据,但我建议你从你想要的位置减去 1。
或者,如果您可以找到一些使用 1 索引向量的库(包装器),例如:
https
://www.rosettacommons.org/manuals/archive/rosetta3.4_user_guide/d3/dd5/classutility_1_1vector1.html
或者您可以简单地创建所需的可以通过从 1 开始的索引访问所需元素的类。