加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 10:27:15 所属栏目:百科 来源:网络整理
导读:任何流行的C库是否都有一个类(或类)允许开发人员使用具有任意索引的数组而不牺牲速度? 为了给出这个问题更具体的形式,我希望有可能编写类似下面的代码: //An array with indices in [-5,6)ArbitraryIndicesArrayint a = ArbitraryIndicesArrayint(-5,6); f
任何流行的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;
}

谢谢…

解决方法

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

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

int* a = new int[10];
a = a + 5;
a[-1] = 1;

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

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

//resetting the array by adding the offset (of -5)
delete [] (a - 5);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读