c++:随机访问动态数组
c++: Random access to Dynamic Array
以下是我的场景:
我正在使用一个大型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(访问时间,因为它使用连续存储器。
相关文章:
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 输出没有重复元素的动态数组(收缩数组)C++
- 正在插入动态数组
- 如何在动态数组上使用搜索函数
- C++ 动态数组每次添加时将大小增加 1 - 错误
- 静态数组的自由动态数组
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 使用 thread 类在 C++ 中构造线程的动态数组时出错
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- C++ 使用存储在动态数组中的文本文件中的数据查找模式
- 当我使用自定义类型创建动态数组时,即使使用字符串,它似乎也不起作用
- 为什么 c++ 动态数组的大小没有改变?
- 具有自定义构造函数 (C++) 的类型的动态数组分配
- 指针的 C++ 动态数组 - 何时需要使用它?
- 删除动态数组时未定义标识符
- 哈希映射使用 nullptr c++ 初始化节点的动态数组
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- 动态数组的 C++ 重载加运算符
- 基于数组的列表 - 动态数组创建时出错