#include<algorithm> sort
https://blockdmask.tistory.com/178
[C++] sort algorithm 정리 및 예시
안녕하세요 BlockDMask 입니다. 오늘은 C++ STL 에서 제공하는 알고리즘 중에 sort 알고리즘에 대해 알아보겠습니다. 0. sort algorithm sort 알고리즘은 헤더파일에 속해있습니다. sort(start, end)..
blockdmask.tistory.com
https://hongku.tistory.com/153
C++ :: STL sort() 함수 다루기, 오름차순 내림차순, 학생 점수 순서대로 나열하기
STL sort() 함수 정렬을 만들어서 사용할 수 는 있지만, 매번 만들어서 사용하기는 번거롭다. 이럴때, 'alforithm' 을 include해서 그안에 있는 sort() 함수를 사용하면 된다. 1. sort() 함수를 이용한 오름차순과..
hongku.tistory.com
#include<queue> sort (priority_queue)
STL priority queue 활용법
모든 nlgn들의 영웅(?) 같은 priority_queue 존재 그 자체로 멋지지만 정말 멋지게 쓰기 위해서는 제대로 활용할 줄 알아야 할 것이다. 1. Colored By Color Scripter™ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1..
koosaga.com
차이점
1.
- #include <algorithm> : sort에서는 greater가 내림차순
- #include <queue> : priority_queue의 sort에서는 greater가 오름차순
2.
- #include <algorithm> : sort에서는 1번의 greater를 사용시에 greater<int>()와 같이 사용
- #include <queue> : priority_queue의 sort에서는 1번의 greater를 사용시에 gerater<int>와 같이 사용
3.
- #include <algorithm> : sort에서는 cmp 함수를 만들때 인자의 왼쪽이 기준
- #include <queue> : priority_queue의 sort에서는 cmp 함수를 만들때 인자의 오른쪽이 기준
추천방법
1. #include <algorithm> : 비교함수 cmp를 만들어서 사용
2. #include <algorithm> : greater<type>() 사용 -> 구조체는 1번, 어떤 원소를 비교할지 몰라 에러 발생
bool cmp(pair<int, string> v1, pair<int, string> v2)
{
if(v1.first == v2.first)
{
sort는 왼쪽이 기준이기 때문에 second 오름차순 정렬
return v1.second < v2.second;
}
else
{
sort는 왼쪽이 기준이기 때문에 first 오름차순 정렬
return v1.first < v2.first;
}
}
vector<pair<int, string>> v;
sort(v.begin(), v.end(), cmp);
sort(v.begin(), v.end()); // 오름차순
sort(v.begin(), v.end(), greater<int>()); // 내림차순
|
cs |
3. #include <queue> : 클래스 cmp에 oeprator()를 만들어서 사용
4. #include <queue> : less<type>, greater<type> 사용
//struct cmp
class cmp
{
public:
bool operator()(pair<int, int> pq1, pair<int, int> pq2)
{
if(pq1.first == pq2.first)
{
// priority_queue는 오른쪽이 기준이기 때문에 second 오름차순 정렬
return pq1.second > pq2.second;
}
else
{
// priority_queue는 오른쪽이 기준이기 때문에 first 오름차순 정렬
return pq1.first > pq2.first;
}
}
};
priority_queue<pair<int, int>, vector<pair<int, int>>, cmp> pq;
// 일반적인 사용법도 추천
priority_queue<pair<int, int>, vector<pair<int, int>>, less<pair<int, int>>> pq;
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq;
|
cs |