在C++中使用do-while循环对向量的元素求和

Summing a vector's elements with do-while loop in C++

本文关键字:向量 元素 求和 循环 do-while C++      更新时间:2023-10-16

我试图在元素之和大于(>)某个数字的条件下添加向量的元素。这必须按顺序进行,所以最后我得到了几个满足上述条件的"合并"元素

例如,如果MINSUM=10和v_1=4,v_2=7,那么v_1+v_2=1>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;
}
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;

有一个STL算法可以执行此任务:<numeric>标头中的std::accumulate

std::accumulate(v.begin(), v.end(), 0);