我工作的一個編程的挑戰,我已經看過這個主題前問:如何按降序和第二個元素對對的向量進行排序?
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
爲什麼發生這種情況?我究竟做錯了什麼?? 幫助將不勝感激
它像什麼殲................ –