1. ホーム
  2. c++

[解決済み】C++ベクターの要素を合計する方法は?

2022-02-08 09:37:47

質問

とは何ですか? 良い の全要素の和を求める方法です。 std::vector ?

ベクトルがあるとします std::vector<int> vector いくつかの要素が含まれています。今、私はすべての要素の合計を求めたい。この場合、どのような方法がありますか?

どのように解決するのですか?

実は、いろいろな方法があるんです。

int sum_of_elems = 0;

C++03

  1. 古典的なforループ。

    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);
    
    

    重要なお知らせです。 最後の引数の型は、初期値だけでなく 結果の型 と同じです。そこにintを入れると、vectorにfloatがあってもintを集積してしまいます。浮動小数点数の和を求める場合は、以下のように変更します。 00.0 または 0.0f (nneonneoさんに感謝)。以下のC++11の解決策も参照してください。

C++11以上

  1. b. 将来的にベクタータイプが変更された場合でも、自動的に把握することができる。

    #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ループを使用する(Roger Pateに感謝)。

    for (auto& n : vector)
        sum_of_elems += n;