* #include <algorithm> 으로 선언해주고, sort 함수를 사용한다.
* sort를 위해 구조체안에 반드시 operator<를 작성해줘야한다.
#include <iostream>
#include <vector>
#include <algorithm>
using std::vector;
int curSortMode = 0; // 0: 오름차순, 1: 내림차순
struct Group{
double value1;
int value2;
Group(double a, int b) {
value1 = a;
value2 = b;
}
bool operator<(const Group &d) const {
if(curSortMode ==0){
if(value1 == d.value1)
return value2 < d.value2; //value1이 같으면 value2를 오름차순 정렬
return value1 < d.value1; //value1을 기준으로 오름차순정렬
}else{
if(value1 == d.value1)
return value2 > d.value2; //value1이 같으면 value2를 내림차순 정렬
return value1 > d.value1; //value1을 기준으로 내림차순 정렬렬
}
}
};
int main(){
vector<Group> V;
int value1 = 10;
int value2 = 100;
V.push_back(Group(value, a));
value = 20;
value2 = 200;
V.push_back(Group(value2, b));
value = 30;
value2 = 300;
V.push_back(Group(value3, c));
value = 40;
value2 = 400;
V.push_back(Group(value4, d));
curSortMode = 0; //오름차순 정렬을 위해 설정
sort(V.begin(), V.end());
for(Group v: V){
std::cout<<"-----"<<std::endl;
std::cout<<v.value1 << v.value2<<std::endl;
}
curSortMode = 1; //내림차순 정렬을 위해 설정
sort(V.begin(), V.end());
for(Group v: V){
std::cout<<"-----"<<std::endl;
std::cout<<v.value1 << v.value2<<std::endl;
}
}
C++ 개념 더보기
'◼️C++' 카테고리의 다른 글
[C++] 구조체 벡터를 3차원 배열 포인터에 저장해서 사용하기 (0) | 2023.10.20 |
---|---|
[C++] 구조체를 함수로 넘겨서 값 변경하기 (0) | 2023.10.19 |
[C++] 2차원 구조체 배열 포인터로 구조체에 접근하기 (0) | 2023.10.19 |
[C++] 클래스의 정적멤버 (static) (0) | 2023.09.17 |
[C++] delete 예약어를 이용한 명시적 메서드 삭제 (0) | 2023.09.17 |