[STL] vector 의 정렬 - object pointer 정렬
[STL] vector 의 정렬 - object pointer 정렬 이 주제는 C++ STL 의 기본에 가까운 듯 한데, 평소에 C++ 로 프로젝트가 진행되는 경우가 없어서 익숙하지가 않아, 쓸때마다 헷갈려서 ( 특히 object pointer 타입을 다룰 때… ) 정리차원에서 한 번 포스팅해 좀. 1. Primitive 타입 먼저 가장 기본 형태. primitive type 의 vector 를 보자. vector<int> v; for (int i = 0; i < 20; i++) v.push_back(i); random_shuffle(v.begin(), v.end()); for (int i = 0; i < 20; i++) cout << v[i] << " "; cout << endl; sort(v.begin(), v.end()); for (int i = 0; i < 20; i++) cout << v[i] << " "; cout << endl; (실행결과) 1 11 15 0 14 7 16 13 8 10 17 5 2 19 18 9 4 3 6 12 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 위와 같이 오름차순으로 정렬이 된다. 기본적으로 std::sort 함수는 elements 비교에 ‘<’ 연산자를 사용하기 때문이다. 그럼 내림차순으로 정렬을 하려면 어떻게 해야 하는가? 바로 compare 하는 함수를 지정해 주거나, compare object 를 지정해 주는 것이다. 이때 함수는 bool comp(int a, int b) 형태로 표현하면 된다. 중요한 점은 comp 함수의 return value 가 true 라면 a 가 b 보다 앞으로 간다는 것이다. 위의 코드에...