1

C++ プログラムで静的テーブルを使用して組み合わせを検索する必要があります。

これは簡単な例です (私のテーブルは 3 ~ 4 倍大きくなります)。

int TABLE[3][3] = {
           /*2*/ /*4*/ /*8*/ 
    /*2*/   {4,    8,    16},
    /*4*/   {8,    16,   32},
    /*8*/   {16,   32,   64}
};

この種のテーブルは、インデックスから組み合わせを検索するのが非常に簡単で、組み合わせを簡単に確認できるので気に入っています。

ただし、「キー」がコメントでのみ定義されているという事実は好きではありません。これは間違っているようです。

コードで同様のテーブルを定義した人はいますか?一般的な推奨事項はありますか?

編集:テーブルを計算できません。プログラム固有の「設定」です。

4

4 に答える 4

3

質問タグを付けたので、いつでも a inside anotherを使用できます。std::unordered_mapstd::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 }
};

ただし、範囲外のインデックスを作成するため、インデックスを超えないように注意する必要があります。

于 2013-05-30T09:24:21.477 に答える