accumulate(), max_element(), min_element()
🔎 accumulate()
배열의 합을 구해주는 함수이다.
template<class InputIt, class T>
T accumulate(InputIt first, InputIt last, T init);
배열 내 [first,last) 범위에 있는 요소들의 합을 구한다.
init: 누적의 시작값 → 보통 0으로 설정
사용 예시
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> a { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int b[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
//vector
cout << "vector의 합은 " << accumulate(a.begin(), a.end(), 0) << "\n";
cout << "init이 100이라면 vector의 합은 " << accumulate(a.begin(), a.end(), 100) << "\n\n";
//Array
cout << "배열의 합은 " << accumulate(b, b + sizeof(b) / sizeof(int), 0) << "\n";
cout << "init이 100이라면 배열의 합은 " << accumulate(b, b + sizeof(b) / sizeof(int), 100) << "\n";
return 0;
}
출력 결과
vector의 합은 55
init이 100이라면 vector의 합은 155
배열의 합은 55
init이 100이라면 배열의 합은 155
🔎 max_element(), min_element()
max_element(): 배열 내의 가장 큰 요소를 찾는 함수
min_element(): 배열 내의 가장 작은 요소를 찾는 함수
해당 요소가 존재하는 이터레이터를 반환하며 같은 값이 2개 이상 존재할 경우
가장 앞에 있는 이터레이터를 반환한다.
이터레이터를 반환하므로 해당 값을 사용하고 싶은 경우 역참조(*)를 사용하면 된다.
사용 예시
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> a { 4, 1, 5, 7, 8, 2, 1, 4, 8 };
auto max = max_element(a.begin(), a.end());
cout << "가장 큰 요소는 " << *max << "이며 " << max - a.begin() << "번째 인덱스에 존재한다.\n";
auto min = min_element(a.begin(), a.end());
cout << "가장 작은 요소는 " << *min << "이며 " << min - a.begin() << "번째 인덱스에 존재한다.\n";
return 0;
}
출력 결과
가장 큰 요소는 8이며 4번째 인덱스에 존재한다.
가장 작은 요소는 1이며 1번째 인덱스에 존재한다.
댓글남기기