[C , C++]
C++ vector sort() 벡터 클래스 변수 기준 정렬
말하는펭귄
2021. 1. 13. 13:06
728x90
반응형
클래스 객체를 담는 벡터에서 클래스 변수 값을 기준으로 벡터를 정렬하는 방법
sort(begin, end, compareFunction)
compareFunction에 비교 조건을 정의할 boolean 반환 사용자 정의 함수를 추가해주면 된다.
★const와 &를 통해서 레퍼런스로 받아와야 한다.
★class의 함수를 통해 변수를 알아내려면 그 함수도 const로 정의해야 한다.
class object {
int var;
public:
int getVar() const {return var;}
};
|
cs |
bool compareFunction(const object &o1, const object &o2) {
return o1.getVar() > o2.getVar();
}
|
cs |
예시 코드: MST Kruskal 알고리즘에서 간선 저장 벡터를 가중치 기준으로 정렬
class Edge {
int v1;
int v2;
int w;
public:
Edge(int ver1, int ver2, int weight): v1(ver1), v2(ver2), w(weight) {}
int getWeight() const { return w; }
int getV1() { return v1; }
int getV2() { return v2; }
};
bool compareWeight(const Edge& n1, const Edge& n2) {
return n1.getWeight() < n2.getWeight();
}
|
cs |
int main() {
cin >> V >> E;
int A, B, C;
for (int i = 0; i < E; i++) {
cin >> A >> B >> C;
eVec.push_back(Edge(A, B, C));
}
sort(eVec.begin(), eVec.end(), compareWeight);
Kruskal();
}
|
cs |
728x90
반응형