2 次元 std::vector の最適な初期化
多次元 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); }
このアプローチは複数のネストされたループを必要とし、やや面倒に見えます。 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 サイトの他の関連記事を参照してください。