具有任意索引的数组的C++类

Bar*_*wek 3 c++ arrays indices

任何流行的C++库都有一个类(或类)允许开发人员使用具有任意索引的数组而不牺牲速度吗?

为了给出这个问题更具体的形式,我希望有可能编写类似下面的代码:

//An array with indices in [-5,6)
ArbitraryIndicesArray<int> a = ArbitraryIndicesArray<int>(-5,6);  
for(int index = -5;index < 6;++index)
{
    a[index] = index;
}
Run Code Online (Sandbox Code Playgroud)

谢谢...

Yac*_*oby 6

真的,你应该使用带偏移的矢量.甚至是带偏移的数组.额外的加法或减法不会对程序的执行速度产生任何影响.

如果您想要一个与默认C数组完全相同的速度,可以将偏移量应用于数组指针:

int* a = new int[10];
a = a + 5;
a[-1] = 1;
Run Code Online (Sandbox Code Playgroud)

但是,不建议这样做.如果你真的想这样做,你应该创建一个包含内联函数的包装类,它隐藏了可怕的代码.您可以保持C代码的速度,但最终能够添加更多错误检查.

如注释中所述,在更改数组指针后,您无法使用该指针进行删除.您必须将其重置为阵列的实际开始.另一种方法是始终保持指向开头的指针,但使用另一个修改过的指针.

//resetting the array by adding the offset (of -5)
delete [] (a - 5);
Run Code Online (Sandbox Code Playgroud)