这个问题在这里已有答案:
如果我有一个vector<pair<int,int> >
数据类型,那么通过该对的第一个元素对它进行排序的可接受方式是什么,然后如果第一个是相等的则按秒进行排序?例如,可能是(1,10),(3,3),(7,13),(7,16),(8,1),(8,2),(15,2)等。
默认情况下,pair
s比较第一个元素,然后是第二个元素。所以,如果你不关心在第一个元素比较相等时保留顺序,那么你可以使用std::sort
:
std::sort(v.begin(), v.end());
std::pair
s comparison operators按字典顺序比较对,它首先比较第一个元素,然后第二个元素,如果第一个元素相等。
Here is an example of using std::vector<std::pair<int, int>>
and std::sort
。
以这种方式使用std::sort
使用std::pair
的operator <
,如上所述,它按字典顺序比较这些对。
通过使用std::stable_sort
,可以保证保留相等元素的相对顺序。也就是说,即使std::pairs
的第一个元素相等,仍保留原始相对顺序。