ホームページ > バックエンド開発 > C++ > C で std::vector の要素を合計する効率的な方法は何ですか?

C で std::vector の要素を合計する効率的な方法は何ですか?

DDD
リリース: 2024-12-03 16:45:13
オリジナル
529 人が閲覧しました

What are the Efficient Ways to Sum the Elements of a std::vector in C  ?

std::vector 内の要素を合計する効率的な方法

std 内の要素の累積合計を確認する必要があるシナリオ::vector には、いくつかの効率的なアプローチが存在します。

C 03 ソリューション:

  1. クラシック For ループ:

    int sum_of_elems = 0;
    for (std::vector<int>::iterator it = vector.begin(); it != vector.end(); ++it)
        sum_of_elems += *it;
    ログイン後にコピー
  2. 標準アルゴリズム:

    #include <numeric>
    
    sum_of_elems = std::accumulate(vector.begin(), vector.end(), 0);
    ログイン後にコピー

    注: 最後の引数の型によって、初期値と結果の型が決まります。浮動小数点入力の場合は、0 の代わりに 0.0 を使用します。

C 11 以降の拡張機能:

  1. 自動ベクトルタイプ処理:

    #include <numeric>
    
    sum_of_elems = std::accumulate(vector.begin(), vector.end(),
                                   decltype(vector)::value_type(0));
    ログイン後にコピー
  2. std::for_each 利用:

    std::for_each(vector.begin(), vector.end(), [&](int n) {
        sum_of_elems += n;
    });
    ログイン後にコピー
  3. 範囲ベースの対象ループ:

    for (auto& n : vector)
        sum_of_elems += n;
    ログイン後にコピー

C 17 以降の追加:

  1. std::自動結果による削減型:

    #include <numeric>
    
    auto result = std::reduce(v.begin(), v.end());
    ログイン後にコピー

    この関数のオーバーロードにより、大規模なコレクションの並列処理が可能になります。

以上がC で std::vector の要素を合計する効率的な方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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