C++/C++ STL 라이브러리

vector max_element, min_element

재윤 2024. 2. 9. 19:12
반응형

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

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

 

  • 또한 max_element를 사용하면 최대값의 인덱스 값도 구해낼 수 있다.
  • 최소값을 구하기 위해서는 min_element를 사용한다.
#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 (std::vector<int>::iterator iter = v.begin(); iter != v.end(); iter++)
	{
		std::cout << "*data : " << *iter << "\\n"; 
	}
	
    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;
}

결과

현재 vector : *data : 46
*data : 68
*data : 184
*data : 4
*data : 17
*data : 53

==============================
가장 큰 수 : 184
가장 큰 수의 인덱스 : 2
==============================
가장 작은 수 : 4
가장 작은 수의 인덱스 : 3
  • *max_element, *min_element는 값을 구해온다. 그냥 max_element, min_element는 iterator를 반환한다.
  • vector는 일련의 반복자로 구성되어 있으므로 최대값을 가리키는 반복자를 맨 처음을 가리키는 v.begin()만큼 빼준다면 인덱스값을 구할 수 있다.

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

 

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

1. 최대값, 최소값 vector 컨테이너에서 최대값, 최소값을 구할 경우 for문을 작성할 수도 있지만 이는 복잡하다. 그래서 algorithm 라이브러리의 있는 max_element를 사용한다면 한줄로도 간단하게 최대

notepad96.tistory.com

C++ max_element, min_element 사용법(최댓값,최솟값)

 

atomic0x90(Yujun Han)

C, C++ programming / markdown / boj / programmers / algorithm / ubuntu / android

atomic0x90.github.io

 

반응형

'C++ > C++ STL 라이브러리' 카테고리의 다른 글

find  (0) 2024.02.09