본문 바로가기

Programming/C++ STL

[C++ STL] algorithm헤더의 유용한 함수들(정렬, 최댓값, 최솟값)

코딩테스트 준비하면서 쓰고있는 함수들을 정리하려고 한다. 굳이 직접 짜서 쓰지 말고 STL을 잘 활용하는게 더 빠르고 편리하다. 배열과 벡터에 모두 적용하는 방법을 소개한다. (또 새로운 함수를 사용하면 추가로 작성할 예정이다.) 

정렬하기: sort함수

그냥 사용하면 오름차순으로 정렬한다. (작은 것 -> 큰 것)

 

#include<iostream>
using namespace std;

int main() {

	int a[10] = { 9,3,5,4,1,10,8,6,7,2 };
	sort(a, a + 10);
	for (int i = 0; i < 10; i++) {
		cout << a[i] << " ";
	}
	

	return 0;
}

 

내림차순으로 정렬하고 싶으면, (큰 것 -> 작은 것)

 

#include<iostream>
#include<algorithm>
#include<functional>
using namespace std;

int main() {

	int a[10] = { 9,3,5,4,1,10,8,6,7,2 };
	sort(a, a + 10, greater<int>());
	for (int i = 0; i < 10; i++) {
		cout << a[i] << " ";
	}
	

	return 0;
}

최댓값, 최솟값 구하기: max_element

#include<iostream>
#include<algorithm>
#include<functional>
using namespace std;

int main() {

	int a[10] = { 9,3,5,4,1,10,8,6,7,2 };
	cout << *max_element(a, a + 10) << endl;
	cout << *min_element(a, a + 10) << endl;

	return 0;
}

벡터일 때는 주소를 어떻게 넣어줄까?

begin()과 end()함수를 이용하자!

 

#include<iostream>
#include<vector>
using namespace std;

int main() {

	vector<int> a;
	for (int i = 1; i <= 10; i++) {
		a.push_back(i);
	}
	
	cout << *max_element(a.begin(), a.end()) << endl;
	cout << *min_element(a.begin(), a.end()) << endl;

	return 0;
}