使用第二個元素對向量對進行排序
根據第二個元素對向量對向量對進行排序是一項常見的編程任務。本文探討了使用現有 STL 組件和 std::less 來實現此目的的各種方法。
方法 1:自訂比較器
自訂比較器是一種常見方法。建立一個具有重寫的operator()函數的結構體,該函數根據第二個元素對對進行比較。例如:
struct sort_pred { bool operator()(const std::pair<int, int>& left, const std::pair<int, int>& right) { return left.second < right.second; } };
然後,將此比較器作為第三個參數呼叫sort():
std::sort(vec.begin(), vec.end(), sort_pred());
方法2:Lambda 表達式(C 11)
在C 11 中,您可以使用lambda表達式定義比較函數:
std::sort(vec.begin(), vec.end(), [](const std::pair<int, int>& left, const std::pair<int, int>& right) { return left.second < right.second; });
方法3:基於通用模板的比較器(C 11)
對於可重複使用程式碼,建立一個基於通用模板的比較器:
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); } };
然後,使用這個基於模板的方法調用sort()比較器:
std::sort(vec.begin(), vec.end(), sort_pair_second<int, int>());
推薦
為了可重複使用性,基於通用模板的比較器是一個強大的選項。然而,為了簡單起見,編寫自訂比較器或 lambda 表達式通常就足夠了。
以上是如何根據 C 中的第二個元素對向量對進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!