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

标签 c++ arrays stl

以下是我的场景:

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

int
vector

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

我希望访问元素的时间要小,并且对于所有加入都是恒定的。

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

我尝试使用 unordered_map of 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 是我从中随机访问元素的二维数组。

最佳答案

就速度而言,没有什么可以击败数组访问,所有更高级别的容器,如 unordered_map<> 添加额外的工作。何时可以使用普通数组或 vector<> ,这始终是您可以获得的最快速度。

你需要unordered_map<>仅当您有一个人口稀少的键空间时,出于空间考虑,禁止使用普通数组/vector 。在这种情况下,unordered_map<>可以将稀疏键空间中的键转换为散列索引到密集填充的散列表中,而散列表又不过是一个数组。

关于c++:随机访问动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23379826/

相关文章:

c++ - PSTR如何接收多个不以逗号分隔的字符串?

c++ - 在数组声明中使用常量结构成员

c# - 实时合并 3D 对象

c++ - (C++) 试图完成一个快速程序,但我不确定哪里出错了?

c++ - 标准库类型赋值运算符的引用限定符

c++ - Boost.享元内存消耗

c++ - 如何使用带有 `--gcov-tool` 标志的 lcov?

javascript - 如何将数字存储在数组中?

arrays - matlab中如何从对象数组中获取属性数组

c++ - `std::set` 在每种情况下都会对元素进行排序吗?