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

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

Mary-Kate Olsen
リリース: 2024-12-04 04:36:12
オリジナル
926 人が閲覧しました

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

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