C++/c++

[STL] Vector내 최대값, 최소값과 그 인덱스 알아내기

Rainbow🌈Coder 2022. 1. 11. 00:16
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