반응형
set은 default로 오름차순으로 정렬되도록 구현이 되어있습니다.
set에 type으로 class를 사용할 때 정렬 기준을 바꾸려면 set의 두 번째 인자로 operator()를 오버로딩한 구조체를 넘겨주면 됩니다.
예를 들어 다음과 같은 person class가 있다고 했을 때
1
2
3
4
5
6
7
8
9
|
class person{
public:
int height;
int weight;
person(int height, int weight) {
this->height = height;
this->weight = weight;
}
};
|
cs |
set의 원소가 다음과 같은 조건을 만족하도록 정렬하고 싶으면
1. height가 작은 순서대로 정렬
2. height가 같으면 weight가 낮은 순서대로 정렬
다음과 같이 cmp 구조체를 만들면 됩니다.
1
2
3
4
5
6
7
8
9
|
struct cmp {
bool operator()(const person& a, const person& b) const{
if (a.height == b.height) {
return a.weight < b.weight;
}
return a.height < b.height;
}
};
|
cs |
구현한 cmp 구조체를 set에 적용하려면 다음과 같이 set을 선언할 때 두 번째 인자로 cmp를 넘겨주면 됩니다.
1
|
set<person, cmp> s;
|
cs |
반응형
'C++' 카테고리의 다른 글
[C++] string::replace로 문자열 치환하기 (0) | 2023.04.22 |
---|---|
[C++ 정리] c언어에 추가 된 기능(수정 예정) (0) | 2022.04.05 |
[C/C++] 콘솔 커서 숨기기 (0) | 2020.03.25 |
[C/C++] 콘솔 커서 위치 이동하기 (0) | 2020.03.25 |
[C/C++] 콘솔 창 크기 조절 / 콘솔 창 제목 설정 (0) | 2020.03.25 |