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

No, partial_sum is being used incorrectly.

The vvSum vector is empty. In that situation, vvSum.begin() is an end iterator, and thus cannot be used for output.

You can call vvSum.resize(vv.size()); to make it have the same size as the original, or use a std::back_inserter(vvSum) iterator, which increases the size of the container as needed.

于 2012-06-12T15:18:08.120 に答える