-3

如果我有一个vector<pair<int,int> >数据类型,那么按对的第一个元素排序然后按第二个(如果第一个元素相等)对它进行排序的公认方法是什么?例如可能是 (1,10), (3,3), (7,13), (7,16), (8,1), (8,2), (15,2) 等等。

4

2 回答 2

9

pairs 默认情况下按第一个元素比较,然后是第二个。因此,如果您不关心在第一个元素比较相等时保留顺序,那么您可以使用std::sort

std::sort(v.begin(), v.end());
于 2013-08-03T04:06:24.240 回答
1

std::pairs 比较运算符按字典顺序比较对,它首先比较第一个元素,然后如果第一个元素相等,则比较第二个元素。

下面是一个使用std::vector<std::pair<int, int>>andstd::sort的例子。

使用std::sort这种方式使用std::pair's operator <,如上所述,它按字典顺序比较对。

更新: 这是一个使用std::stable_sort自定义比较函数的示例,该函数仅比较第一个元素

通过使用std::stable_sort,可以保证保留相等元素的相对顺序。也就是说,即使 的第一个元素std::pairs相等,仍然保留原始的相对顺序。

于 2013-08-03T04:08:52.353 回答