具有任意索引的数组的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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |