본문 바로가기
중요한건 꾸준함!/자료구조, 알고리즘

[c++ STL]vector sort() 함수와 compare 함수

by 방배킹 2023. 4. 11.

vector sort() 함수

vector<int> vec

sort(vec.begin(),vec.end());
  • #include<algorithm> 헤더파일을 추가하면 사용 할 수있다.
  • 기본적으로 vector에서 sort() 함수는 다음과 같이 사용된다.
  • 디폴트로 오름차순으로 정렬이 된다 (1,2,3,4,5)

vector sort() 내림차순

sort(vec.begin(),vec.end(),greater<>());
  • 다음과 같이 greater<>()을 추가해주면 내림차순으로 정렬 할 수있다.(5,4,3,2,1)

compare 인자

sort(vec.begin(), vec.end(), compare);
  • greater<>()과 같이 compare를 추가해주면 sort 함수를 변형 할 수 있다.(compare()이 아닌 compare 이다.)

예시

vector<pair<int,int>> vec;

for(int i=0;i<5;i++){
	vec.push_back(make_pair(i,i+1));
}

다음과 같이 pair<int,int>를 저장하는 vector가 존재한다고 하자

해당 vector는 어떻게 sort 함수를 이용할것인가?

 

bool compare(pair<int,int> a, pair<int,int> b){
	if(a.first == b.first)
    	return a.second < b.second;
    return a.first < b.first;
}

compare를 다음과 같이 정의하면 해당 vector의 first 값이 동일하면 second 값을 기준으로 오름차순으로 정렬을하고

first값이 다르다면 first값을 기준으로 오름차순으로 정렬 시켜준다.

 

위처럼 compare 변수를 직접 설정하여 원하는 조건을 기준으로 sort 할 수 있다.

'중요한건 꾸준함! > 자료구조, 알고리즘' 카테고리의 다른 글

[C++ STL] next_permutaion  (0) 2024.04.16
순열(15649), 조합(15650) (c++)  (1) 2023.04.28
트리  (0) 2023.04.03
이분 그래프  (0) 2023.03.27
인접행렬과 인접리스트  (0) 2023.03.27

댓글