[C++, STL] 벡터와 배열의 최대값, 최소값 출력

다른 글

[C++, STL] 알고리즘 문제풀이를 위한 벡터(vector)

벡터와 배열의 최대값, 최소값

max_element(), min_element()는 자료구조에서 [forward, last) 범위 내 최대값, 최소값을 리턴한다. 이를 활용해서 벡터, 배열의 최대값과 최소값을 출력할 수 있다.

max_element(forword iterator, last iterator)
min_element(forword iterator, last iterator)

구현

헤더파일

max_element()와 min_element()는 algorithm 헤더파일을 필요로한다.

#include <algorithm>

벡터의 최대값, 최소값 출력

벡터의 begin(), end()를 forward iterator, last iterator로 입력한다면 벡터의 최대값, 최소값을 출력할 수 있다. max_element, min_element의 리턴값은 포인터이므로 값을 출력하기 위해 ‘*’를 사용한다.

포인터 값인 *(asterisk)의 이름이 따로 있는지 모르겠다.

vector<int>v;
*max_element(v.begin(), v.end()); // 최대값
*min_element(v.begin(), v.end()); // 최소값

begin() 대신 begin()+2 를 넣어준다면 범위를 3번째 원소부터 마지막 원소까지로 지정할 수 있다.

end() 대신 end()-2 를 넣어준다면 범위를 처음부터 마지막-2번째 원소까지로 지정할 수 있다.

*max_element(v.begin()+2, v.end()-2) // 3번째 원소부터 마지막-2 원소까지의 최대값 리턴

예제 코드

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main(){
    vector<int>v = {10,4,23,72,9,14,1,42};
    cout<<"max : "<<*max_element(v.begin(), v.end())<<endl; // max : 72
    cout<<"min : "<<*min_element(v.begin(), v.end())<<endl; // min : 1
    cout<<"min : "<<*min_element(v.begin()+2, v.end()-2)<<endl; // min : 9
}

배열의 최대값, 최소값 출력

배열의 첫주소, 마지막 주소를 forward iterator, last iterator로 입력한다면 배열의 최대값, 최소값을 출력할 수 있다.

max_element, min_element의 리턴값은 포인터이므로 값을 출력하기 위해 ‘*’를 사용한다.

int a[10] = {42,32,9,72,92,3,41,2,18,64};
*max_element(a, a+10); // 최대값 출력
*min_element(a, a+10); // 최소값 출력

forward iterator, last iterator를 조절하여 배열의 특정 범위 내 최대값, 최소값을 출력할 수 있다.

cout<<"min : "<<*min_element(a+1, a+7)<<endl; // 2번째 원소부터 7번째 원소 범위 내 최소값 출력

예제코드

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main(){
	int a[10] = {42,32,9,72,92,3,41,2,18,64};
	cout<<"max : "<<*max_element(a, a+10)<<endl; // max : 92
	cout<<"min : "<<*min_element(a, a+10)<<endl; // min : 2
	cout<<"min : "<<*min_element(a+1, a+7)<<endl; // min : 3

}

참고

http://www.cplusplus.com/reference/algorithm/max_element/

Leave a Comment