0

假设我拥有的向量是<1, 2, 3>,我想得到累加值向量<1, 3, 6>。我猜 C++ 函数 partial_sum 就是这样做的。但是当我执行时这个功能不起作用(程序错误)。是否正确使用了 partial_sum?

vector<float> vv, vvSum;
vv.push_back(1); vv.push_back(2); vv.push_back(3);

partial_sum(vv.begin(), vv.end(), vvSum.begin(), plus<float>());

for(unsigned int i = 0; i < vvSum.size(); ++i)
{
    cout << vv[i] << " " << endl;
}
4

1 回答 1

3

不,partial_sum使用不当。

vvSum向量为空。在那种情况下,vvSum.begin()是一个结束迭代器,因此不能用于输出。

您可以调用vvSum.resize(vv.size());使其与原始大小相同,或使用std::back_inserter(vvSum)迭代器,根据需要增加容器的大小。

于 2012-06-12T15:18:08.120 回答