根据第二个元素对向量对进行排序
给定一个向量对,人们可能希望根据它们的升序排列它们第二个要素。在构造自定义函数对象完成此任务的同时,让我们探讨一下标准模板库 (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中文网其他相关文章!