https://edukoi.tistory.com/88?category=841618
sort에 제공할 compare 함수 형태는 다음과 같습니다
bool compare (const 데이터형 a, const 데이터형 b) { 순서가 제대로인 경우 0이 아닌 값 순서가 바뀐 경우는 0을 리턴해야 한다. } |
a와 b는 배열 내에서 앞에 있는 원소가 a, 뒤에 있는 원소가 b가 된다.
따라서, 두 원소의 값이 원하는 정렬 순서라면 0이 아닌 값을 리턴하도록 작성해야 하며,
원하는 순서가 아닌 경우는 0이 리턴되도록 해야 한다.
bool compare(pair<int, char> a, pair<int, char> b) { if (a.second == b.second) return a.first < b.first; else return a.second < b.second; } |
[ 실습 예제 1 ]
#include <iostream>
#include <algorithm>
#include <vector>
#include <utility>
using namespace std;
bool compare(pair<int, char> a, pair<int, char> b)
{
if(a.second == b.second)
return a.first < b.first;
else return a.second < b.second;
}
int main()
{
int i;
vector<int> a;
a.push_back(3);
a.push_back(1);
a.push_back(9);
a.push_back(5);
a.push_back(2);
// 3가지 방법으로 정렬하였습니다
// sort()명령어 한줄씩 실행시켜서 확인해보세요
sort(a.begin(), a.end()); //오름차순
//sort(a.begin(), a.end(), greater<int>()); //내림차순
//sort(a.begin(), a.end(), less<int>());
for(i=0;i<a.size(); i++)
{
cout << a[i] << ' ';
}
pair<int, char> t;
t = make_pair(3, 'A');
cout << t.first << ' ' << t.second << '\n';
vector< pair<int, char> > v;
t = make_pair(3, 'D');
v.push_back(t);
t = make_pair(6, 'A');
v.push_back(t);
t = make_pair(1, 'A');
v.push_back(t);
t = make_pair(2, 'Q');
v.push_back(t);
t = make_pair(5, 'D');
v.push_back(t);
// 4가지 방법으로 정렬하였습니다
// sort()명령어 한줄씩 실행시켜서 확인해보세요
sort(v.begin(), v.end());
//sort(v.begin(), v.end(), greater<pair<int, char> >());
//sort(v.begin(), v.end(), less<pair<int, char> >());
// 정렬 기준을 선택해줘야하기 때문에 compare함수를 사용해야 합니다
//sort(v.begin(), v.end(), compare );
for(int i=0;i<v.size(); i++)
{
cout << v[i].first << ' ' << v[i].second << '\n';
}
return 0;
}
[ 문제 1 ] www.acmicpc.net/problem/2750
[ 문제 2 ] www.acmicpc.net/problem/2751
[ 문제 3 ] www.acmicpc.net/problem/11650
[ 문제 4 ] www.acmicpc.net/problem/11651
[ 문제 5 ] www.acmicpc.net/problem/10814
[ 백준 10814 소스 코드 ]
https://edukoi.tistory.com/176?category=917269
[ 문제 6 ] www.acmicpc.net/problem/10825
[ 백준 10825 국영수 소스 코드 ]
[ 문제 7 ] www.acmicpc.net/problem/10989
[ 백준 10989 수 정렬하기3 - 소스 코드 ]
https://edukoi.tistory.com/177?category=917269
[ 문제 8 ] www.acmicpc.net/problem/2108
[ 문제 9 ] www.acmicpc.net/problem/1427
[ 문제 10 ] www.acmicpc.net/problem/1181
[ 백준 1181번 단어 정렬 소스 코드 ]
[ 문제 11 ] www.acmicpc.net/problem/11652
'C++ STL' 카테고리의 다른 글
6. C++ STL [ vector 2일차 ] vector 컨테이너 (0) | 2020.04.01 |
---|---|
5. C++ queue 컨테이너 + pair() (0) | 2020.04.01 |
4. C++ stack 컨테이너 + pair() - 1문제 (0) | 2020.04.01 |
3. C++ stack 컨테이너 (0) | 2020.04.01 |
1. C++ STL이란 / pair() 예문 (0) | 2020.03.26 |