728x90
vector 컨테이너에서 최대값, 최소값을 구하기 위해
#include <algorithm>를 써주고
max_element(벡터.begin(), 벡터.end())-벡터.begin()
구문을 작성하면 최대값의 인덱스를 구할 수 있다.
max_element의 결과로 최대값을 가리키는 반복자를 반환하기 때문이다.
원리 : (최대값을 가리키는 반복자 - 맨 처음을 가리키는 v.begin())
더불어 * 연산자를 사용하면 최대값을 구할 수 있다.
또한, max_element를 사용하면 최대값의 인덱스 값도 구해낼 수 있다.
최소값과 그 인덱스를 구하기 위해서는 min_element로 바꿔서 사용해주기만 하면 된다.
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
vector<int> v = {5, 8, 2, 4, 5, -5};
int max = *max_element(v.begin(), v.end());
int min = *min_element(v.begin(), v.end());
cout << "최대 : " << max << "\n";
cout << "최소 : " << min << "\n";
// 최대, 최소값의 인덱스 구하기
int max_index = max_element(v.begin(),v.end()) - v.begin();
int min_index = min_element(v.begin(),v.end()) - v.begin();
return 0;
}
반복자를 받는 erase와 같이 제법 쓸만하다.
v.erase(max_element(vec.begin(), vec.end()));
deque에서도 유사하게 이용할 수 있다.
728x90
'C++ > c++' 카테고리의 다른 글
[STL] map에서 Value를 기준으로 정렬하고 싶을 경우 (0) | 2022.01.15 |
---|---|
[STL] map (0) | 2022.01.15 |
[STL] key 중복가능한 multimap과 make_pair 조합 (0) | 2022.01.05 |
[STL] unordered_map과 make_pair 같이 쓰기 (0) | 2022.01.04 |
[STL] 이중 Vector : 예시 vector<vector<string>>, 코드첨부 (0) | 2022.01.04 |