Algorithm/Algorithm_Tip
[pair 정렬] vector를 이용한 pair 정렬
WantAirpod
2020. 10. 21. 15:48
반응형
Pair
bool cmp 함수가 가장 중요하다.
bool cmp(pair<int, int> a, pair<int, int> b)
{
if (a.first < b.first)
return true;
else if (a.first == b.first)
{
if (a.second < b.second)
{
return true;
}
}
return false;
}
- true이면 조건문그대로 정렬 하는 것
- false이면 swap 해주는 것
- 위의 조건문은 first기준 오름차순이며 같을 경우 second 값을 오름차순으로 결정한다..
v.push_back({ 1,3 });
v.push_back({ 1,4 });
v.push_back({ 10,3 });
v.push_back({ 12,3 });
v.push_back({ 14,3 });
v.push_back({ 14,2 });
sort(v.begin(), v.end(), cmp);
Struct
if(a.z>b.z) 면 true라는 것은 내림차순 정렬이다.! a.z>b.z가 큰 것이 맞다!
using namespace std;
struct abc
{
int x;
int y;
int z;
};
bool cmp(abc a, abc b)
{
if (a.z > b.z)
return true;
else
return false;
}
int main()
{
vector<abc> v;
v.push_back({ 1,2,1 });
v.push_back({ 1,2,2 });
v.push_back({ 1,2,3 });
v.push_back({ 1,2,4 });
//1,2,4->1,2,3->1,2,2->1,2,1로 정렬해라
sort(v.begin(), v.end(), cmp);
return 0;
}
반응형