1

我有一个关于矢量位置的问题。正如我们所知,如果我们要将某些东西存储到向量中。它将开始在位置 0 存储第一个元素。

所以例如我的向量中有 3 个东西

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

有没有办法让第一个元素存储在向量位置 1 而不是位置 0?

4

4 回答 4

6

您可以制作一个虚拟的第一个元素。但是请不要,每个使用 C++ 的人都希望向量是从 0 开始的。

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

或者切换到帕斯卡。

于 2013-10-15T08:24:31.607 回答
3

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

于 2013-10-15T08:24:28.793 回答
2

是的。您可以在位置 0 中插入一个虚拟对象。稍后再插入一个真实值。当然,您想使用“人工索引器”迭代 AND 访问。对于最后一个条目,这通常会失败。这种语言是基于零索引的。

于 2013-10-15T08:25:45.297 回答
1

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

于 2013-10-15T08:30:34.300 回答