[C++] vector 모든 요소의 합계 계산

vector의 모든 요소들의 합계를 계산하는 방법을 소개합니다.

1. for문으로 합계 계산

반복문으로 vector의 모든 요소를 순회하면서 합계를 계산할 수 있습니다.

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

template<typename T>
double getSum(std::vector<T> const& vec) {
    if (vec.empty()) {
        return 0;
    }

    double sum = 0.0;
    for (int i = 0; i < vec.size(); i++) {
        sum += (double) vec.at(i);
    }
    return sum;
}

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};

    double sum = getSum(vec);
    std::cout << "Sum: " << sum << std::endl;

    return 0;
}

Output:

Sum: 15

2. std::accumulate()를 이용한 방법

std::accumulate(first, last, init)은 배열의 first에서 last 구간의 요소들의 합을 리턴합니다. init은 합계에 기본으로 추가되는 값입니다. init을 10으로 전달하면 합계에 10이 추가된 값이 리턴됩니다.

아래와 같이 vector의 합계를 계산할 수 있습니다.

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

template<typename T>
double getSum(std::vector<T> const& vec) {
    if (vec.empty()) {
        return 0;
    }
    return std::accumulate(vec.begin(), vec.end(), 0.0);
}

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};

    double sum = getSum(vec);
    std::cout << "Sum: " << sum << std::endl;

    return 0;
}

Output:

Sum: 15

3. std::reduce()를 이용한 방법

std::reduce(first, last, init)도 first에서 last 범위의 vector 요소들의 합을 리턴합니다. init은 초기 값으로, 합계에 더해서 리턴되는 값입니다.

아래와 같이 vector의 합계를 계산할 수 있습니다.

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

template<typename T>
double getSum(std::vector<T> const& vec) {
    if (vec.empty()) {
        return 0;
    }
    return std::reduce(vec.begin(), vec.end(), 0.0);
}

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};

    double sum = getSum(vec);
    std::cout << "Sum: " << sum << std::endl;

    return 0;
}

Output:

Sum: 15
Loading script...
codechachaCopyright ©2019 codechacha