我在向量中有一对int和string,如何在int的基础上对它们进行排序,如果int值是重复的,则根据字符串的词典方式进行排序。
vector< pair<int, string> > v;
答案 0 :(得分:2)
你只是:
std::sort(v.begin(), v.end());
std::pair
按字典比较。
另一方面,如果你想根据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 :(得分:0)
我所做的是存储int值乘以-1然后按升序排序,然后再次乘以-1到存储的int值以恢复int值。这样做可以根据需要排列对的矢量。