矢量排序仅基于第一

时间:2014-08-21 06:52:27

标签: c++ sorting vector

嘿所有我都有一对矢量。在对矢量进行排序之后(即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

请帮助!!

1 个答案:

答案 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; });