我工作的一个编程的挑战,我已经看过这个主题前问:如何按降序和第二个元素对对的向量进行排序?
Sorting elements of vector where each element is a pair [duplicate]
How do I sort a vector of pairs based on the second element of the pair?
而且情况是这样的:
-I有我的矢量的配对:vector< pair<int, int> > rank;
-我已经实现了一个谓词来比较和排序由secon对的向量d元素,按降序排列:
struct predicate
{
bool operator()(const std::pair<int, int> &left, const std::pair<int, int> &right)
{
return left.second < right.second;
}
}
sort(rank.rbegin(), rank.rend(), predicate());
编程挑战将给重复值的第二个元素,而对于情况下,我必须离开以它插入到对的矢量的时间排序的第一个元素,例如:
K V 1 3 2 4 4 5 33 3
排序必须是:
4 5 2 4 1 3 33 3
问题是当我测试我的测试情况下,我设计的解决方案:
K V 1 2 16 3 11 2 20 3 18 2 39 39 23 22 12 19 123 4 145 6 3 5 26 4 9574 4 7 1 135 5 193 99 18237 3 22 4 1293 3 3471 33
它应该输出应该是这样的,排序向量后:
193 99 39 39 3471 33 23 22 12 19 145 6 3 5 135 5 123 4 26 4 9574 4 22 4 16 3 20 3 18237 3 1293 3 1 2 11 2 18 2 7 1
但不是说,我得到了第一值也订购了一些元素:
193 99 39 39 3471 33 23 22 12 19 145 6 3 5 135 5 123 4 26 4 9574 4 22 4 20 3 ->Changed element 16 3 ->Changed element 18237 3 1293 3 18 2 ->Changed element 11 2 1 2 ->Changed element 7 1
为什么发生这种情况?我究竟做错了什么?? 帮助将不胜感激
它像什么歼................ –