在C ++中按第一个元素和第二个元素对第一个元素的矢量进行排序? [重复]

问题描述 投票:-4回答:2

这个问题在这里已有答案:

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

c++ sorting vector std-pair
2个回答
8
投票

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

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

1
投票

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

Here is an example of using std::vector<std::pair<int, int>> and std::sort

以这种方式使用std::sort使用std::pairoperator <,如上所述,它按字典顺序比较这些对。

更新:Here is an example using std::stable_sort and a custom comparison function that compares only the first element

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

© www.soinside.com 2019 - 2024. All rights reserved.