쌍의 두 번째 요소를 기준으로 쌍의 벡터를 효율적으로 정렬하는 방법
이 문서에서는 다음을 기반으로 쌍의 벡터를 정렬하는 문제를 다룹니다. 각 쌍의 두 번째 요소를 오름차순으로 표시합니다. 이 작업을 위해 사용자 정의 함수 객체를 생성하는 것이 실행 가능한 솔루션이지만 기존 STL 구성 요소와 std::less를 활용하는 대체 방법이 있습니다.
사용자 정의 비교기와 함께 std::sort 사용
한 가지 접근 방식은 사용자 지정 비교기를 std::sort에 대한 선택적 세 번째 인수로 사용하는 것입니다. sort_pred라고 하는 이 사용자 정의 비교기는 다음과 같이 정의됩니다.
struct sort_pred { bool operator()(const std::pair<int,int> &left, const std::pair<int,int> &right) { return left.second < right.second; } };
이 비교기를 활용하려면 간단히 std::sort:
std::sort(v.begin(), v.end(), sort_pred());
C 11을 사용하여 전달하면 됩니다. 람다
C 11 컴파일러를 사용하는 경우 다음을 활용할 수 있습니다. 사용자 정의 비교기 대신 람다:
std::sort(v.begin(), v.end(), [](const std::pair<int,int> &left, const std::pair<int,int> &right) { return left.second < right.second; });
쌍 정렬을 위한 일반 템플릿 사용
유연성과 재사용성을 높이기 위해 sort_pair_second라는 일반 템플릿을 만들 수 있습니다. :
template <class T1, class T2, class Pred = std::less<T2> > struct sort_pair_second { bool operator()(const std::pair<T1,T2>&left, const std::pair<T1,T2>&right) { Pred p; return p(left.second, right.second); } };
이 템플릿을 사용하면 다음과 같이 원하는 정렬을 얻을 수 있습니다. 다음:
std::sort(v.begin(), v.end(), sort_pair_second<int, int>());
위 내용은 두 번째 요소를 기준으로 쌍 벡터를 효율적으로 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!