如何对向量中的成对元素进行排序

How to sort elements of pairs inside vector?

本文关键字:元素 排序 向量      更新时间:2023-10-16

我在向量中有一对int和string,如何首先根据int对它们进行排序,如果int值重复,则根据字符串的字典化方式进行排序。

vector< pair<int, string> > v;

您只是:

std::sort(v.begin(), v.end());

对CCD_ 1进行字典比较。

另一方面,如果你想根据std::pair的第二个元素对它们进行排序,那么你必须以以下方式定义一个自定义比较器:

std::sort(v.begin(), v.end(), [](std::pair<int, std::string> const &p1,
                                 std::pair<int, std::string> const &p2) { 
                                   return (p1.second == p2.second)?
                                             p1.first < p2.first  :
                                             p1.second < p2.second;
                              });

我所做的是存储乘以-1的int值,然后按升序排序,然后再次乘以-1到存储的int值以恢复int值。这样做可以根据需要排列成对的向量。

相关文章: