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 回答