ホームページ >バックエンド開発 >C++ >C で 2D ベクトルを初期化する最も効率的な方法は何ですか?

C で 2D ベクトルを初期化する最も効率的な方法は何ですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-05 06:14:131036ブラウズ

What's the Most Efficient Way to Initialize a 2D Vector in C  ?

コンストラクターと均一な初期化を使用した 2 次元ベクトルの効率的な初期化

次のコード スニペットを考えてみましょう:

std::vector< std::vector<int> > fog;

この 2 次元ベクトルを初期化するために、多くの開発者はネストされたベクトルを含む手動アプローチを利用しています。ループ:

for(int i=0; i<A_NUMBER; i++)
{
    std::vector<int> fogRow;
    for(int j=0; j<OTHER_NUMBER; j++)
    {
         fogRow.push_back(0);
    }
    fog.push_back(fogRow);
}

ただし、この手動初期化手法は最適ではない可能性があります。別のアプローチでは、初期サイズとデフォルト値を受け入れる std::vector::vector(count, value) コンストラクターを利用します。

std::vector<std::vector<int>> fog(
    ROW_COUNT,             // Specifies the number of rows
    std::vector<int>(COLUMN_COUNT)  // Initializes each row with a default value of 0
);

ゼロ以外のデフォルト値が必要な場合は、次のようにします。 4 として、次の構文を利用できます:

std::vector<std::vector<int>> fog(
    ROW_COUNT,
    std::vector<int>(COLUMN_COUNT, 4)  // Initializes each row with a default value of 4
);

さらに、C 11 では統一初期化が導入され、簡潔なメソッドが提供されました。コンテナを初期化しています。均一初期化では、中括弧 ({}) を使用して初期値を設定します。

std::vector<std::vector<int>> fog { { 1, 1, 1 },
                                    { 2, 2, 2 } };

これらのコンストラクターと均一初期化手法を採用することで、開発者は 2 次元ベクトルを効率的に初期化し、コードの可読性とパフォーマンスを向上させることができます。

以上がC で 2D ベクトルを初期化する最も効率的な方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。