struct
를 이용해서
x를 1순위로 오름차순으로 정렬하고 y가 2순위로 오름차순 z가 3순위로 오름차순 정렬하기
struct Point
{
//이 구조체의 변수들
int y, x, z;
// y,x를 받아 생성한다
Point(int x, int y, int z) : y(y), x(x), z(z) {}
// y,x 정해지지 않으면 이걸로 초기화
Point()
{
y = -1;
x = -1;
z = -1;
}
bool operator<(const Point &a) const
{
if (x == a.x)
{
if (y == a.y)
return z < a.z;
return y < a.y;
}
return x < a.x;
}
}
;
vector<Point> v;
int main()
{
for (int i = 10; i >= 1; i--)
{
Point a = {i, 10 - i, i - 1};
v.push_back(a);
}
sort(v.begin(), v.end());
for (auto it : v)
cout << it.x << " : " << it.y << " : " << it.z << '\n';
return 0;
}
struct Point
{
int x, y, z;
};
bool cmp(const Point &a, const Point &b)
{
if (a.x == b.x)
{
if (a.y == b.y)
{
return a.z > b.z;
}
return a.y > b.y; // x값 같으면 y기준 내림차순
}
return a.x > b.x; // x기준 내림차숮
};
vector<Point> v;
int main()
{
for (int i = 10; i >= 1; i--)
{
Point a = {100, 10 - i, i - 1};
v.push_back(a);
}
sort(v.begin(), v.end(), cmp);
for (auto it : v)
cout << it.x << " : " << it.y << " : " << it.z << '\n';
return 0;
}