質問c++にもタグを付けたので、いつでも a inside anotherを使用できます。std::unordered_map
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 }
};
ただし、範囲外のインデックスを作成するため、インデックスを超えないように注意する必要があります。