嘿所有我都有一对矢量。在对矢量进行排序之后(即sort(v.begin(),v.end())
.....它在第一个元素的基础上对元素进行排序但是有一个概率与我...因为我需要保持第二个元素的第一个相同的顺序元素相同......例如,查看以下代码..
std::vector<std::pair<int, int> > v(2);
v[0].first = 1; v[1].first = 1;
v[0].second = 2; v[1].second = 0;
sort(v.begin(),v.end());
for (int i = 0; i < 2; i++)
{
std::cout << v[i].first << " " << v[i].second << std::endl;
}
作为上述代码的输出
1 0
1 2
而我希望输出如下
1 2
1 0
请帮助!!
答案 0 :(得分:5)
使用自定义比较器使用std::stable_sort
(以保留您的广告订单):
std::stable_sort(std::begin(v),
std::end(v),
[](const std::pair<int, int>& p1, const std::pair<int, int>& p2) { return p1.first < p2.first; });