C++ Vector 최대값, 최소값, 인덱스 구하기

Notepad96

·

2020. 11. 12. 14:03

300x250

 

 
 

1. 최대값, 최소값

 

vector 컨테이너에서 최대값, 최소값을 구할 경우 for문을 작성할 수도 있지만 이는 복잡하다.

 

 

그래서 algorithm 라이브러리의 있는 max_element를 사용한다면 한줄로도 간단하게 최대값을 구할 수 있다.

 

 

 

 

또한, max_element를 사용하면 최대값의 인덱스 값도 구해낼 수 있다.

 

최소값을 구하기 위해서는 min_element를 사용한다.

 

 

 

 


2. 코 드

환경 : Visual studio 2019
 
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;

int main() {
    vector<int> v;
    v.push_back(46);
    v.push_back(68);
    v.push_back(184);
    v.push_back(4);
    v.push_back(17);
    v.push_back(53);
    
    cout << "현재 vector : ";
    for (int i : v) cout << i << " ";
    cout << "\n==============================\n";

    int max = *max_element(v.begin(), v.end());
    cout << "가장 큰 수 : " << max << "\n";
    
    int max_index = max_element(v.begin(), v.end()) - v.begin();
    cout << "가장 큰 수의 인덱스 : " << max_index;
    cout << "\n==============================\n";


    int min = *min_element(v.begin(), v.end());
    cout << "가장 작은 수 : " << min << "\n";

    int min_index = min_element(v.begin(), v.end()) - v.begin();
    cout << "가장 작은 수의 인덱스 : " << min_index << "\n\n";

    return 0;
}
 
 
결과

 

- max_element의 결과로 최대값을 가리키는 반복자를 반환한다. 따라서 이를 * 연산자를 사용하면 최대값을 구할 수 있다.

 

또한, vector는 일련의 반복자로 구성되어 있으므로 최대값을 가리키는 반복자를 맨 처음을 가리키는 v.begin()만큼 빼준다면 인덱스 값을 구할 수 있다.

 
 
 

- vector와 유사한 구조인 deque에서도 동일하게 이용할 수 있다.

 
 
 
 


3. 참 조

 
 
 

max_element - C++ Reference

function template std::max_element default (1)template ForwardIterator max_element (ForwardIterator first, ForwardIterator last); custom (2)template ForwardIterator max_element (ForwardIterator first, ForwardIterator last, Compare comp); Return

www.cplusplus.com

 

 

300x250