2 次元 std::vector の効率的な初期化
次のコード スニペットを考えてみましょう:
std::vector< std::vector<int> > fog; 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); }
このメソッド2 次元の std::vector の初期化は非効率的に見えます。 std::vector::vector(count, value) コンストラクターを利用する別のアプローチが利用可能です:
std::vector<std::vector<int>> fog( ROW_COUNT, std::vector<int>(COLUMN_COUNT)); // Defaults to zero initial value
ゼロ以外のデフォルト値が必要な場合は、以下に示すように指定します:
std::vector<std::vector<int>> fog( ROW_COUNT, std::vector<int>(COLUMN_COUNT, 4));
さらに、C 11 で導入された均一初期化により、{}:
std::vector<std::vector<int>> fog { { 1, 1, 1 }, { 2, 2, 2 } };
以上がC で 2D std::vector を初期化する最も効率的な方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。