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

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

DDD
リリース: 2024-11-28 07:38:10
オリジナル
737 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート