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