Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ STL accumulate() 함수로 벡터 요소의 합 구하기

이 튜토리얼에서는 C++에서 STL을 활용하여 벡터(vector)에 저장된 모든 요소의 합을 구하는 방법을 알아보겠습니다.

벡터 요소들의 합을 계산할 때는 <numeric> 헤더에 포함된 accumulate() 함수를 사용하는 것이 가장 간단하고 효율적인 방법입니다.

accumulate() 함수란?

accumulate() 함수는 지정된 범위 내의 모든 요소를 순회하면서 초기값부터 차례대로 더해 누적 합계를 반환합니다. 기본 사용 형태는 다음과 같습니다.

accumulate(시작_반복자, 끝_반복자, 초기값);

예제 코드

#include <bits/stdc++.h>
using namespace std;

int main() {
    // 벡터 정의
    vector<int> a = { 1, 45, 54, 71, 76, 12 };

    cout << "Vector: ";
    for (int i = 0; i < a.size(); i++)
        cout << a[i] << " ";
    cout << endl;

    // 요소들의 합 계산
    cout << "Sum = " << accumulate(a.begin(), a.end(), 0);

    return 0;
}

실행 결과

Vector: 1 45 54 71 76 12
Sum = 259

코드 설명

위 예제에서 a.begin()a.end()는 벡터의 첫 번째 요소와 마지막 요소 다음 위치를 가리키는 반복자이며, 세 번째 인자인 0은 누적 합계의 초기값입니다. 즉, 0에서 시작하여 벡터의 모든 요소(1 + 45 + 54 + 71 + 76 + 12)를 순서대로 더해 최종 결과인 259를 출력합니다.

참고로, 초기값의 자료형에 따라 반환 타입이 결정되므로 큰 값의 합계를 다룰 때는 오버플로우를 방지하기 위해 0LL처럼 long long 타입의 초기값을 사용하는 것이 좋습니다.