쌍 벡터의 사용자 정의 정렬
쌍 벡터를 정렬하려는 시나리오를 고려하십시오(
std:: 벡터<std::pair<int, int>)
별도의 함수 객체를 구현하지 않고 이를 달성하려면 사용자 정의 비교기를 허용하는
std::sort의 세 번째 매개변수를 활용할 수 있습니다. 이 비교기는 제공된 비교기를 사용하여 두 번째 요소를 기반으로 두 쌍을 비교합니다.
예를 들어 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; });
또는 ,
operator()비교를 수행하는 함수:
struct sort_pred { bool operator()(const std::pair<int,int>& left, const std::pair<int,int>& right) { return left.second < right.second; } }; std::sort(v.begin(), v.end(), sort_pred());
다양한 유형 및 비교기와 함께 재사용할 수 있는 일반 솔루션을 원하는 경우 다음과 같은 템플릿을 만듭니다.
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>());
위 내용은 C의 두 번째 요소를 기반으로 쌍 벡터를 사용자 정의 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!