有兩個陣列,一個用於ids,另一個用於得分,我想將這兩個陣列存儲到std::map
,並使用std::partial_sort
查找五個最高分數,然後打印它們的ID 所以,有沒有可能使用std::partial_sort
在std::map
?我可以使用std :: partial_sort對std :: map進行排序嗎?
1
A
回答
2
在std::map
中,排序僅適用於鍵。您可以使用矢量做到這一點:
//For getting Highest first
bool comp(const pair<int, int> &a, const pair<int, int> &b){
return a.second > b.second;
}
int main() {
typedef map<int, int> Map;
Map m = {{21, 55}, {11, 44}, {33, 11}, {10, 5}, {12, 5}, {7, 8}};
vector<pair<int, int>> v{m.begin(), m.end()};
std::partial_sort(v.begin(), v.begin()+NumOfHighestScorers, v.end(), comp);
//....
}
這裏是Demo
+0
僅供參考,'std :: vector'構造函數之一需要一對迭代器,所以'mapValToVec'函數不是必需的:'v {map.begin(),map.end()};'就足夠了。 –
+0
已修改。感謝您的信息。 –
+0
理解,謝謝 – TwenteMaster
3
號不能重新排列std::map
的項目。它總是按升序排列。
相關問題
- 1. 如何使用std :: sort對std :: array進行排序?
- 2. 使用std ::排序的std ::列表進行排序
- 3. 我可以移動 - 將std :: map的內容分配到另一個std :: map嗎?
- 4. std :: map按數據排序?
- 5. Doxygen可以識別std :: shared_ptr或std :: map
- 6. 我可以在std :: map中使用CComPtr嗎?
- 7. std :: shared_ptr - 我可以使用等號(=)進行初始化嗎?
- 8. 我怎麼可以排序使用的std ::排序
- 9. 我可以扔`std :: bad_cast`嗎?
- 10. 我可以使用std :: pair作爲std :: multimap中的鍵嗎?
- 11. 對std進行排序的功能:用&參數C++排序
- 12. 使用std :: set排序std :: list
- 13. 我可以將參數傳遞給std :: vector排序函數嗎?
- 14. 我可以使用before_save對nested_attributes進行排序嗎?
- 15. 根據數據對排序std :: map(map-> vector-> sort)
- 16. 使用std :: string作爲std :: map的鍵
- 17. 可以std :: async調用std :: function對象嗎?
- 18. 使用std :: thread使用std :: map的意外行爲
- 19. 在std :: map中使用std :: auto_ptr安全嗎?
- 20. std :: map - 如何更改鍵排序?
- 21. C++ std :: map鍵排序比較函數?
- 22. 排序一個std :: map <string,double>
- 23. 嚴格的弱排序和std :: set/std :: map
- 24. std :: map
- 25. 我可以對WinRAR進行排隊嗎?
- 26. 我可以使用std :: stack作爲對象池容器嗎?
- 27. 我想在修改std :: map的同時對它進行修改
- 28. std ::排序獲取std :: bad_alloc
- 29. std :: map插入或std :: map查找?
- 30. 在std :: map中插入std :: map
您可以按迭代器的矢量*到*地圖元素。 – StoryTeller
使用'map> m;'您可以簡單地存儲2個數組的值,如下所示:'m [score] = id;'存儲所有'score'和相應的'id's,你可以參考'map'的起始5個值來得到5個最高'score'和他們對應的'id's。 –
sameerkn