컨테이너의 요소를 지정된 연산으로 누적해서 계산하는 데 사용되는 알고리즘 함수다.
std::accumulate는 기본적으로 더하기 연산을 수행하지만, 커스텀 연산을 지정하여 다양한 방식으로 누적 계산이 가능하다. 이 함수는 시간 복잡도 O(n)으로 동작한다.
#include <numeric>
std::accumulate(시작_반복자, 끝_반복자, 초기값, [커스텀_연산]);
#include <iostream>
#include <vector>
#include <numeric> // std::accumulate
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 벡터의 모든 요소를 더하여 합 계산
int sum = std::accumulate(vec.begin(), vec.end(), 0);
std::cout << "Sum: " << sum << "\n"; // 출력: Sum: 15
return 0;
}
#include <iostream>
#include <vector>
#include <numeric> // std::accumulate
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 벡터의 모든 요소를 곱하여 결과 계산
int product = std::accumulate(vec.begin(), vec.end(), 1, [](int a, int b) {
return a * b;
});
std::cout << "Product: " << product << "\n"; // 출력: Product: 120
return 0;
}
#include <iostream>
#include <vector>
#include <numeric> // std::accumulate
#include <string>
int main() {
std::vector<std::string> words = {"Hello", " ", "World", "!"};
// 문자열 누적 (연결)
std::string result = std::accumulate(words.begin(), words.end(), std::string(""));
std::cout << "Concatenated String: " << result << "\n"; // 출력: Concatenated String: Hello World!
return 0;
}
#include <iostream>
#include <vector>
#include <numeric> // std::accumulate
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5, 6};
// 짝수만 누적하여 합 계산
int evenSum = std::accumulate(vec.begin(), vec.end(), 0, [](int a, int b) {
return b % 2 == 0 ? a + b : a;
});
std::cout << "Sum of even numbers: " << evenSum << "\n"; // 출력: Sum of even numbers: 12
return 0;
}
#include <iostream>
#include <vector>
#include <numeric> // std::accumulate
struct Person {
std::string name;
int age;
};
int main() {
std::vector<Person> people = {{"Alice", 25}, {"Bob", 30}, {"Charlie", 35}};
// 총 연령 누적 계산
int totalAge = std::accumulate(people.begin(), people.end(), 0, [](int sum, const Person &p) {
return sum + p.age;
});
std::cout << "Total Age: " << totalAge << "\n"; // 출력: Total Age: 90
return 0;
}