繁体   English   中英

c ++:随机访问动态数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM