[英]c++: Random access to Dynamic Array
以下是我的情景:
我正在使用大型2D动态数组来存储具有以下属性的元素:
int
vector
现在,随机访问数组元素。 因此,对元素的时间访问会发生很大变化。
我希望时间访问元素小,以及所有加入的常量。
动态数组最适合我的场景吗?
我尝试使用boost的unordered_map,但与动态数组相比,无序映射似乎需要更多时间来访问元素。
请给出建议:
码:
码:
for( counter1=0; counter1< sizeof(chunk1); ++counter1)
{
//code lines skipped
IndexEntries &data=IndexTable[chunk1[counter1]][chunk1[counter1+1]];
DoubleTableEntries &GetValue=NewDoubleTable[NextState_chunk1][data.index];
NextState_chunk1= GetValue.Next_State;
++Bcount;
buffer[ Bcount]=NextState_chunk1;
++counter1;
// Code lines skipped
}
这里NewDoubleTable是我从中随机访问元素的2d数组。
对于随机访问,没有什么可以击败阵列(动态或非动态)。 只有这种数据结构平均提供O(1)访问时间,因为它使用连续的内存。
没有任何东西能够在速度方面超越数组访问,所有更高级别的容器(如unordered_map<>
增加额外的工作量 。 当你可以使用普通数组或vector<>
,这总是最快的。
只有当您有一个稀疏填充的键空间时才需要unordered_map<>
因为空间考虑因素禁止使用普通数组/向量。 在这种情况下, unordered_map<>
可以将稀疏键空间中的键转换为哈希索引到紧密填充的哈希表中,而哈希表又不过是一个数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.