【发布时间】:2011-01-19 16:57:46
【问题描述】:
是否有任何流行的 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;
}
【问题讨论】:
-
有什么理由不能使用
std::vector和偏移量? -
@David Rodríguez 通过单向数组,您是指常规 C 数组?
-
@ezpz 你的意思是每次我需要访问元素时都使用 std::vector 并写入 v[indedx + offset] 吗?这不好,因为:a)你我将不得不跟踪这一点,因为忘记偏移会导致错误。 b)我正在做数学计算,索引本身看起来像 v[index + degree - gap]。添加数组的偏移量会使它变得更加混乱,并使调试变得如此困难。
-
对不起,我的意思是一维的(我想知道我在想什么)。问题是您是否要支持多个维度。
-
@Bartłomiej:我说的是在一个薄包装器中使用
std::vector。构造函数将获取范围并透明地管理偏移量。界面与您的v[index + degree - gap]相同