이번 글에서는 C++의 STL(표준 템플릿 라이브러리)을 활용해 배열의 모든 요소 합계를 구하는 방법을 알아보겠습니다. 예를 들어 배열이 [12, 45, 74, 32, 66, 96, 21, 32, 27]과 같다면, 모든 요소를 더한 결과는 405가 됩니다.
이 문제는 반복문으로 일일이 더하는 대신 accumulate() 함수 하나로 간단하게 해결할 수 있습니다. 이 함수는 <numeric> 헤더 파일에 정의되어 있으며, 지정된 범위 내의 모든 요소를 초기값부터 차례대로 누적하여 합산합니다.
accumulate() 함수의 기본 문법
accumulate(시작_반복자, 끝_반복자, 초기값);
- 시작_반복자: 합산을 시작할 위치
- 끝_반복자: 합산을 종료할 위치 (마지막 요소 다음)
- 초기값: 누적합의 시작 값 (일반적으로 0 사용)
예제 코드
#include<iostream>
#include<numeric>
using namespace std;
int main() {
int arr[] = {12, 45, 74, 32, 66, 96, 21, 32, 27};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "배열 요소: ";
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
cout << "\n모든 요소의 합: " << accumulate(arr, arr + n, 0);
}실행 결과
배열 요소: 12 45 74 32 66 96 21 32 27 모든 요소의 합: 405
코드 설명
sizeof(arr) / sizeof(arr[0])를 이용하면 배열 전체 크기를 요소 하나의 크기로 나누어 배열의 길이를 자동으로 계산할 수 있습니다. 그 후 accumulate(arr, arr + n, 0)을 호출하면 배열의 첫 번째 요소부터 마지막 요소까지 초기값 0에 순서대로 더해 최종 합계인 405가 반환됩니다.
참고로 accumulate()는 정수뿐만 아니라 실수 배열에도 사용할 수 있으며, 세 번째 인자에 원하는 연산(예: 곱셈용 multiplies<int>())을 전달하면 합계 외에 다양한 누적 연산도 수행할 수 있습니다.