向量中的元素总和?

时间:2016-03-16 03:20:22

标签: c++ vector sum

如何找到用户输入的向量中元素的总和?我尝试在网上到处寻找一种方法,但实际上并没有真正找到一个解释得非常好的方法,也不是在课堂上解释得太多了。

所以我基本上都有用户在这里输入的向量,但我不知道如何使用它来获取它的总和? (printvector只在那里,因为我必须在告诉用户总和之前呈现用户输入的内容)

#include <iostream>
#include <vector>
using namespace std;

void fillVector(vector<int>&);

void printVector(const vector<int>&);

int main()
{

vector<int> VectorQuantities;
fillVector(VectorQuantities);
printVector(VectorQuantities);

return 0;
}

void fillVector(vector<int>& newVectorQuantities)
{
cout << "Type in a list of numbers, and type in -1 as the last number when       you are finished: ";
int input;
cin >> input;

while (input != -1) {
    newVectorQuantities.push_back(input);
    cin >> input;
}
cout << endl;
}

void printVector(const vector<int>& newVectorQuantities) {

cout << "Vector: ";
for (unsigned int i=0; i < newVectorQuantities.size(); i++) {
    cout << newVectorQuantities[i] << " ";
}

cout << endl;
}

2 个答案:

答案 0 :(得分:4)

您可以使用std::accumulate()

#include <algorithm>
std::vector<int> vec = ...;
int vecSum = std::accumulate(std::begin(vec), std::end(vec), 0);

accumulate()函数实际上只是left fold,默认情况下它使用+函数来组合元素。

答案 1 :(得分:-1)

试试这个:

void printSum(const vector<int>& newVectorQuantities) {

    cout << "Sum: ";
    int sum = 0;
    for (unsigned int i=0; i < newVectorQuantities.size(); i++) {
        sum = sum + newVectorQuantities[i];
    }
     cout << sum << " ";
}

(使用你的风格作为函数,而不是现代的C ++。)