對向量的自訂排序
考慮要對向量對進行排序的場景(
std::向量<std: :pair int>></std:>
要在不實現單獨的函數物件的情況下實現此目的,您可以利用
std::sort
例如,使用 C 11 編譯器,您可以使用 lambda 表達式定義比較器:
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中文網其他相關文章!