簡體   English   中英

從2D數組中檢索數組元素

[英]Retrieving Array Elements from a 2D array

我想在2D數組中存儲256 * 256個條目。 我這樣做:

struct Data
{
    int Serial_Number;
    int NextIndex;
} ;

struct Data Index[256][256];


Data obj1;
obj1.Serial_Number=1;
obj1.NextIndex=5;

Index[3][240]=obj1;

現在,一旦我存儲了所有這些值,那么我將如何從數組元素中檢索每個值?

就像我想要檢索存儲在Index [3] [240]中的值一樣。

其次,這種方法比unordered_map更快嗎?

struct Data
{
    int Serial_Number;
    int NextIndex;
} ;

struct Data Index[256][256]; //should be this

Data obj1;
obj1.Serial_Number=1;
obj1.NextIndex=5;

Index[3][240]=obj1;

檢索數據: struct Data data = Index[3][240];

加入struct的數據: data.Serial_Number;

如果要逐個檢索每個值,只需使用Index [0] [0]到Index [256-1] [256-1]的索引。 但是如果要從數組中訪問特定元素,則需要循環數組才能找到它。

for(int i = 0; i < 256; ++i)
    for(int j = 0; j < 256; ++j)
        if(Index[i][j] == what you are looking for)
        {
            found!
        }

時間復雜度為O(m * n)(m是長度,n是數組的寬度),而unordered_map::find() )在最好的情況下在O(1)中運行,在最壞的情況下是O(n)( n是元素的數量,當散列函數不好導致太多的散列沖突,這可能發生,因為unordered_map在其實現中使用散列表)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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