以下是我的场景:
我正在使用大型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/