从2D数组中检索数组元素

时间:2014-03-24 05:32:43

标签: c++

我想在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更快吗?

2 个答案:

答案 0 :(得分:1)

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;

答案 1 :(得分:1)

如果要逐个检索每个值,只需使用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) case(n是元素的数量,当散列函数不好导致太多的散列冲突,这可能发生,因为unordered_map在其实现中使用散列表)。

相关问题