gpt4 book ai didi

c++ - 如何总结 C++ vector 的元素?

转载 作者:IT老高 更新时间:2023-10-28 11:27:09 25 4
gpt4 key购买 nike

找出std::vector 中所有元素之和的 方法是什么? ?

假设我有一个 vector std::vector<int> vector里面有一些元素。现在我想找到所有元素的总和。相同的方法有哪些不同?

最佳答案

其实方法还是蛮多的。

int sum_of_elems = 0;

C++03

  1. 经典for循环:

     for(std::vector<int>::iterator it = vector.begin(); it != vector.end(); ++it)
    sum_of_elems += *it;
  2. 使用标准算法:

     #include <numeric>

    sum_of_elems = std::accumulate(vector.begin(), vector.end(), 0);

    重要提示:最后一个参数的类型不仅用于初始值,还用于结果的类型。如果你把一个 int 放在那里,即使 vector 有 float ,它也会累积 int。如果要对 float 求和,请更改 00.00.0f (thanks to nneonneo)。另请参阅下面的 C++11 解决方案。

C++11 及更高版本

  1. b.即使将来发生变化,也会自动跟踪 vector 类型:

     #include <numeric>

    sum_of_elems = std::accumulate(vector.begin(), vector.end(),
    decltype(vector)::value_type(0));
  2. 使用 std::for_each :

     std::for_each(vector.begin(), vector.end(), [&] (int n) {
    sum_of_elems += n;
    });
  3. 使用基于范围的 for 循环 (thanks to Roger Pate):

     for (auto& n : vector)
    sum_of_elems += n;

C++17 及以上

  1. 使用 std::reduce它还处理结果类型,例如,如果您有 std::vector<int> , 你得到 int结果。如果您有 std::vector<float> , 你得到 float .或者,如果您有 std::vector<std::string> , 你得到 std::string (所有字符串连接)。很有趣,不是吗?

    auto result = std::reduce(v.begin(), v.end());

    other overloads of this function如果您有大量集合并且想要快速获得结果,您甚至可以并行运行。

关于c++ - 如何总结 C++ vector 的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3221812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com