使用 accumulate 一次从一个向量中求和 12 个数字,然后将结果添加到另一个向量 C++
using accumulate to sum 12 numbers at a time from one vector and then adding the result to another vector C++
我想一次对 12 个数字求和(以模拟一年),然后将结果添加到一个单独的向量中,但我似乎很吃力。我曾尝试一次将 12 个数字放入循环中,但我不确定。这是我正在阅读的文本文件中的示例。
您必须累加每年的值,这意味着输入向量中的 12 个连续元素。
每次你击中第 12 个元素时,你的累加器都有预期值。
double currentrain = 0;
for(int i = 0; i < rainfall.size(); ++i) {
// accumulate rain this year
currentrain += rainfall[i];
// i%12==11 on december
if((i%12)!=11)
continue;
// we have accounted each month in this year
sum.push_back(currentrain);
// reset the accumulator for next year
currentrain = 0;
}
您可以直接使用 std::accumulate :
vector<double> result;
for (auto it = begin(rainfall); it+12<=rainfall.end(); it+=12)
result.emplace_back(accumulate(it, it+12, 0));
我想一次对 12 个数字求和(以模拟一年),然后将结果添加到一个单独的向量中,但我似乎很吃力。我曾尝试一次将 12 个数字放入循环中,但我不确定。这是我正在阅读的文本文件中的示例。
您必须累加每年的值,这意味着输入向量中的 12 个连续元素。
每次你击中第 12 个元素时,你的累加器都有预期值。
double currentrain = 0;
for(int i = 0; i < rainfall.size(); ++i) {
// accumulate rain this year
currentrain += rainfall[i];
// i%12==11 on december
if((i%12)!=11)
continue;
// we have accounted each month in this year
sum.push_back(currentrain);
// reset the accumulator for next year
currentrain = 0;
}
您可以直接使用 std::accumulate :
vector<double> result;
for (auto it = begin(rainfall); it+12<=rainfall.end(); it+=12)
result.emplace_back(accumulate(it, it+12, 0));