根據第二個元素對向量對向量對進行排序
給定一個向量對,人們可能希望根據它們的升序排列它們第二個要素。在建構自訂函數物件完成此任務的同時,讓我們探討一下標準範本庫 (STL) 是否為我們提供了更方便的方法。
使用自訂比較器
第三種std::sort 的參數允許指定自訂比較器函數。我們可以如下定義:
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());
在C 11 及以上版本中使用Lambda
在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; });
利用模板靈活性
為了提高可重用性,可以定義一個基於模板的比較器:
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中文網其他相關文章!