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