如何在C ++中实现一个数组,以便第一个元素的索引是2.换句话说,而不是从' 0'开始的索引,我希望从' 2' 。 有可能吗?
提前致谢。
答案 0 :(得分:3)
虽然C ++的内置数组的索引从零开始,但你可以构建一个类似数组的类,其索引从任意数字开始,甚至是负数。
构建类这样的类的关键是覆盖方括号运算符[]
,实现通过减去偏移量将传入索引转换为实现中封装的实际数组的索引。
以下是使用vector<T>
表示数据的实现草图:
class array_with_offset {
int offset;
vector<int> data;
public:
array_with_offset(int N, int off)
: offset(off), data(N) {
}
int& operator[](int index) {
return data[index-offset];
}
};
答案 1 :(得分:2)
只需将数组分配两个项目超过您需要的时间,并忽略索引0和1处的项目。