0

要素の合計が特定の数より大きい(>)という条件で、ベクトルの要素を追加しようとしています。これは順番に行う必要があるため、最後に上記の条件を満たすいくつかの「マージされた」要素を取得します

たとえば、MINSUM = 10 で v_1 = 4、v_2= 7 の場合、v_1+v_2 = 11 > 10 の場合、ループを終了します。そうでない場合は、v_3 も追加して条件を再度確認します。これが私がやっていることですが、うまくいきません

vector < float >values_;        //this vector holds the real number I want to add
float sum_ = 0;
     ////////loop inside the vector 
for (unsigned t = 0; t < values_.size(); t++) {
        //        //////first , take the first element of the vector
        float cont_ = values_[t];
        //             /////and add the next value
        float cont_next = values_[t + 1];
        /////some stupid boolean
        bool check_point = false;
        sum_two_bins = cont_;
        //         ////////and now loop        
        do {
                sum_ += cont_next;
                t++;
                check_point = true;
                break;
        }
        while (sum_ < MINENTRIES);
        if (check_point)
                cout << " at the end, is the sum ok more than MINENTRIES? "
                    << sum_ << "  " << t << endl;
}
4

2 に答える 2

2
std::vector<float> values;
float sum = 0.0f;
for(const auto& value : values)
{
    if(sum += value > MINENTRIES)
          break;
}

cout << " at the end, is the sum ok more than MINENTRIES? " << sum << "  " << t << endl;

C++98

std::vector<float> values;
float sum = 0.0f;
for(std::vector<float>::iterator it = values.begin(); it != values.end(); ++it)
{
    if(sum += *it > MINENTRIES)
          break;
}

cout << " at the end, is the sum ok more than MINENTRIES? " << sum << "  " << t << endl;
于 2013-07-11T14:30:41.490 に答える
0

このタスクを実行するための STL アルゴリズムがあります:ヘッダーstd::accumulate内。<numeric>

std::accumulate(v.begin(), v.end(), 0);
于 2013-07-11T15:04:42.570 に答える