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

C++ STL accumulate 함수로 배열 원소의 곱 구하기

C++에서는 STL(표준 템플릿 라이브러리)의 accumulate 함수를 활용하면 배열에 담긴 모든 원소의 곱을 간단하게 계산할 수 있습니다. 이 글에서는 <numeric> 헤더에 포함된 accumulatemultiplies 함수 객체를 사용해 배열의 곱을 구하는 방법을 예제 코드와 함께 살펴봅니다.

알고리즘

배열 원소의 곱을 구하는 절차는 다음과 같습니다.

시작
   배열의 값을 초기화한다.
   accumulate 함수를 호출하여 배열 원소들의 곱을 반환받는다.
   결과를 출력한다.
종료.

예제 코드

아래 예제에서 accumulate 함수는 초기값 1부터 시작하여, 세 번째 인자로 전달된 multiplies<int>()를 기준으로 배열의 모든 원소를 순서대로 곱합니다.

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

int ProductOfArray(int p[], int n) {
    return accumulate(p, p + n, 1, multiplies<int>());
}

int main() {
    int m[] = {6, 7};
    int n = sizeof(m) / sizeof(m[0]);
    cout << "배열 원소의 곱은: " << ProductOfArray(m, n);
}

실행 결과

배열 원소의 곱은: 42

코드 설명

  • accumulate(p, p + n, 1, multiplies<int>()): 포인터 p부터 p + n까지의 범위를 순회하며 초기값 1에 각 원소를 곱해 나갑니다.
  • multiplies<int>(): 두 정수를 곱하는 연산을 수행하는 STL 함수 객체입니다. 기본 덧셈 대신 곱셈을 적용하기 위해 사용됩니다.
  • sizeof(m) / sizeof(m[0]): 배열 전체 크기를 첫 번째 원소 크기로 나누어 배열의 원소 개수를 구하는 일반적인 방법입니다.

이처럼 accumulate를 활용하면 반복문을 직접 작성하지 않고도 한 줄의 코드로 배열 원소의 곱을 깔끔하게 계산할 수 있습니다.