c++ 是否可以使用和将向量的所有数字相加< functional>< algorithm>?[duplicate]

2admgd59  于 2023-03-20  发布在  Go
关注(0)|答案(1)|浏览(105)

此问题在此处已有答案

(13个答案)
六年前关闭了。
我已经研究这个问题一天了,但是我似乎找不到答案,我需要使用和添加向量的所有元素。
到目前为止,我找到了http://www.cplusplus.com/reference/functional/plus/,有没有可能,不把2个向量相加,而是把它的元素相加,我找不到任何其他的方法,甚至接近我想做的。
顺便说一下,我是新的语言。我不需要代码,但只是一个提示,在正确的方向。

j8ag8udp

j8ag8udp1#

执行此操作的算法在<numeric>标头中,而不是在<algorithm>标头中。请参见std::accumulate

#include <iostream>
#include <numeric>
#include <vector>

int main()
{
    std::vector<int> data = {1, 2, 10};
    const auto result = std::accumulate(data.begin(), data.end(), 0);
    std::cout << result << std::endl;
    return 0;
}

如果您坚持使用函数式和<algorithm>,则可以使用std::for_eachstd::function

#include <algorithm>
#include <iostream>
#include <functional>
#include <vector>

int main()
{
    std::vector<int> data = {1, 2, 10};
    int result = 0;

    std::function<void(int)> sum = [&result](int value){result += value;};
    std::for_each(data.begin(), data.end(), sum);

    std::cout << result << std::endl;
    return 0;
}

相关问题