有沒有一種方法來排序std :: map數據而不是密鑰?現在我的代碼將整個地圖複製到一個數組中,只是爲了做到這一點。std :: map按數據排序?
回答
據我記得,std::map
會給你迭代器,將通過按鍵排序的項目。只有通過值來遍歷已排序項目並仍然使用地圖的方法是將整個集合重寫爲另一個地圖,其中鍵和值顛倒過來。
我發現使用一個單一的矢量和簡單的發現的東西就更好。 – Jookia 2010-10-22 00:33:03
如果你這樣做,你將失去鍵值對信息。 – 2013-06-25 18:23:44
我指向Oli Charlesworth的回答http://stackoverflow.com/a/5056797/158371 – 2013-12-02 21:08:49
- 1. 根據數據對排序std :: map(map-> vector-> sort)
- 2. C++ std :: map鍵排序比較函數?
- 3. std :: map - 如何更改鍵排序?
- 4. 排序一個std :: map <string,double>
- 5. 在輸出和銷燬之前按值排序std :: map
- 6. 何時選擇關鍵值數據的std :: map over std :: map?
- 7. 我可以使用std :: partial_sort對std :: map進行排序嗎?
- 8. 嚴格的弱排序和std :: set/std :: map
- 9. 按照Groovy的降序排序Map值
- 10. C++:std :: map數字ID的迭代排序 - 交叉編譯
- 11. std :: map
- 12. 取決於輸入值對std :: map的排序順序
- 13. 序列化std :: map C++
- 14. std :: map插入或std :: map查找?
- 15. 在std :: map中插入std :: map
- 16. 按奇數排序
- 17. std :: find_if,std :: binary_function用於按值搜索std :: map
- 18. map <string,object>根據對象成員函數值排序
- 19. 按YEAR排序數據
- 20. 按日期排序數據?
- 21. 按組排序數據
- 22. JQuery Datatables:按數據排序
- 23. 按日期排序數據
- 24. std ::按一元映射排序
- 25. std ::排序獲取std :: bad_alloc
- 26. 迭代std :: map <X,std :: vector <Y>>並排序向量
- 27. 無法編譯std :: map排序,爲什麼?
- 28. 的map-reduce排序
- 29. 按數據排序數據框列
- 30. boost :: lambda std :: map
猜猜你需要另一張地圖,其中鍵/值顛倒了嗎? – 2010-10-21 23:55:05
還沒有找到一個好的解決方案。你不能僅僅交換地圖(如同許多人所建議的那樣),因爲兩個值可能是相同的,從而創建一個可能具有較少元素的新地圖。實際上**不可能**按值排序地圖,因爲地圖是按鍵排序的(因此爲什麼它很快)。即使你嘗試創建一個新的已排序的地圖,通過像向量一樣推入值,你仍然會得到一個按鍵排序的地圖!我在代碼中實現的方式是爲每個鍵和值創建排序向量,並在我的應用程序中使用這些向量。爲了製作矢量,我先 – user2544830 2013-07-03 02:52:59
[STL map - >按值排序?](http://stackoverflow.com/questions/2699060/stl-map-sort-by-value) – 2017-01-01 14:20:13