コンストラクターと均一な初期化を使用した 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 サイトの他の関連記事を参照してください。