簡體   English   中英

c ++:隨機訪問動態數組

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM