ホームページ >バックエンド開発 >C++ >C で 2D std::vector を初期化する最も効率的な方法は何ですか?

C で 2D std::vector を初期化する最も効率的な方法は何ですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-04 04:36:121018ブラウズ

What's the Most Efficient Way to Initialize a 2D std::vector in C  ?

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

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