다른 글
[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/