[C++] 최댓값, 최솟값

leeact·2023년 6월 7일
1

c++ 정리

목록 보기
11/13
post-thumbnail

max, min, minmax

max(), min(), minmax()algorithm 라이브러리에 구현되어 있다.
max와 min은 최대, 최소를 2개 이상({a,b,c,d,e})의 값과 비교하여 구하고,
minmax는 최대, 최소를 한번에 구한다.

#include <algorithm>

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	int a = 1, b = 10, c = 100, d = 777;

	int MAX = max(a, b); // 10
	int MIN = min(a, b); // 1
	int MAX2 = max({ a, b, c, d }); // 777

	pair<int, int> MINMAX = minmax({ a, b, c, d }); // 1, 777

	return 0;
}

max_element, min_element

만약 비교해야할 값이 배열, 벡터, 리스트처럼 많다면 어떻게 해야할까?
바로 max_element(), min_element()를 사용하면 된다.

1. max_element(start, end) => 최댓값의 iterator을 반환
2. max_element(start, end) => 최댓값의 value을 반환
3. min_element(start, end) => 최솟값의 iterator을 반환
4.
min_element(start, end) => 최솟값의 value을 반환

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	array<int, 5> ar = { 1, 2, 3, 4, 5 };
	vector<int> v = { -1, -2, -3, -4, -5 };
	list<int> li = { 100, -100, 200, -200, 300 };

	// 최댓값 value
	cout << *max_element(ar.begin(), ar.end()) << '\n';
	cout << *max_element(v.begin(), v.end()) << '\n';
	cout << *max_element(li.begin(), li.end()) << '\n';

	// 최솟값 value
	cout << *min_element(ar.begin(), ar.end()) << '\n';
	cout << *min_element(v.begin(), v.end()) << '\n';
	cout << *min_element(li.begin(), li.end()) << '\n';

	return 0;
}

3개의 댓글

comment-user-thumbnail
2023년 6월 7일

오 max 여러개는 저렇게 구현하는군요!
pair도 자주 보이던데 찾아봐야겠어요

1개의 답글