-
C++ vector sort() 벡터 클래스 변수 기준 정렬[C , C++] 2021. 1. 13. 13:06728x90반응형
클래스 객체를 담는 벡터에서 클래스 변수 값을 기준으로 벡터를 정렬하는 방법
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반응형'[C , C++]' 카테고리의 다른 글
C++ test case 입력 개수 모를 때 입력 받기 (0) 2021.01.21 C++ 위상 정렬 - 연결리스트, 스택 (0) 2021.01.19 C++ 포인터 객체 배열 NULL, nullptr 초기화 (0) 2020.12.17 [C++] #define으로 swap (0) 2020.11.30 C, C++ 코드 실행 시간 / clock() 함수 / time() 함수 (0) 2020.08.06