由于您还标记了您的问题c++,您始终可以使用 a std::unordered_map
inside another std::unordered_map
:
std::unordered_map<int, std::unordered_map<int, int>> TABLE = {
{ 2, { { 2, 4 }, { 4, 8 }, { 8, 16 } } },
{ 4, { { 2, 8 }, { 4, 16 }, { 8, 32 } } },
{ 8, { { 2, 16 }, { 4, 32 }, { 8, 64 } } }
// ^ ^ ^
// | | |
// | | value at [row][column]
// | |
// | column
// row
};
// ...
std::cout << TABLE[1][5] << '\n'; // Outputs `0`
std::cout << TABLE[4][6] << '\n'; // Outputs `0`
std::cout << TABLE[4][4] << '\n'; // Outputs `16`
在纯 C 中,如果不填充数组,就无法在特定“键”处获得特定值:
int TABLE[9][9] = {
{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 4, 0, 8, 0, 0, 0, 16 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 8, 0, 16, 0, 0, 0, 32 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 16, 0, 32, 0, 0, 0, 64 }
};
但是,您应该注意不要超出索引,因为您将索引超出范围。