ホームページ >バックエンド開発 >C++ >C で 2D std::vector の初期化を最適化するにはどうすればよいですか?

C で 2D std::vector の初期化を最適化するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-28 07:38:10713ブラウズ

How Can I Optimize the Initialization of a 2D std::vector in C  ?

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 サイトの他の関連記事を参照してください。

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