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

c++: Random access to Dynamic Array

本文关键字:动态 数组 访问 随机 c++      更新时间:2023-10-16

以下是我的场景:

我正在使用一个大型2D动态数组来存储具有以下属性的元素:

int
vector

现在,数组元素是随机访问的。因此,访问元素的时间变化很大。

我希望对所有加入的元素的时间访问既小又恒定。

动态数组最适合我的场景吗?

我尝试使用boost的无序映射,但与动态数组相比,无序映射似乎需要更多的时间来访问元素。

请给出建议:

代码:

代码:

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数组。

在速度方面,没有什么能比得上数组访问,所有像unordered_map<>这样的更高级别容器都增加了额外的工作。当您可以使用纯数组或vector<>时,这总是您能获得的最快的。

只有当您具有稀疏的密钥空间时,才需要unordered_map<>,由于空间考虑,该密钥空间禁止使用纯数组/向量。在这种情况下,unordered_map<>可以将稀疏密钥空间中的密钥转换为哈希索引,并将其转换为紧密填充的哈希表,而该哈希表又无非是一个数组。

对于随机访问,没有什么能打败数组(动态或非动态(。只有这种数据结构平均提供O(1(访问时间,因为它使用连续存储器。