C ++设计策略中的向量和

时间:2010-08-07 10:16:13

标签: c++ stl vector

  

可能重复:
  sum of elements in a std::vector

我想总结一下std :: vector

的项目

例如

 std::vector<int > MYvec;
 /*some push backs*/

 int x=sum(MYVec); //it should give sum of all the items in the vector

如何编写sum函数?

我试过这个

 int sum(const std::vector<int> &Vec)
 {
    int result=0;
    for (int i=0;i<Vec.size();++i)
      result+=Vec[i];
    return result;
 }

但我不喜欢我的方法

4 个答案:

答案 0 :(得分:8)

尝试使用C ++标准库中的accumulate。 像这样:

#include <vector>
#include <numeric>

// Somewhere in code...
std::vector<int> MYvec;
/*some push backs*/

int sum = std::accumulate( MYvec.begin(), MYvec.end(), 0 );

答案 1 :(得分:2)

您应该使用std::accumulate

int main() {
  std::vector<int> vec;
  // Fill your vector the way you like
  int sum = std::accumulate(vect.begin(), vect.end(), 0); // 0 is the base value
  std::cout << sum << std::endl;
  return 0;
}

答案 2 :(得分:1)

是否有std :: accumulate函数执行此操作?

答案 3 :(得分:0)

你必须迭代数组中的所有项目并计算总和,没有更简单的方法。我想循环是最简单的

int sum = 0;
for(unsigned i = 0; i < Myvec.size(); i++){
   sum += MYvec[i];
}