2010-10-21 53 views
5

有沒有一種方法來排序std :: map數據而不是密鑰?現在我的代碼將整個地圖複製到一個數組中,只是爲了做到這一點。std :: map按數據排序?

+1

猜猜你需要另一張地圖,其中鍵/值顛倒了嗎? – 2010-10-21 23:55:05

+0

還沒有找到一個好的解決方案。你不能僅僅交換地圖(如同許多人所建議的那樣),因爲兩個值可能是相同的,從而創建一個可能具有較少元素的新地圖。實際上**不可能**按值排序地圖,因爲地圖是按鍵排序的(因此爲什麼它很快)。即使你嘗試創建一個新的已排序的地圖,通過像向量一樣推入值,你仍然會得到一個按鍵排序的地圖!我在代碼中實現的方式是爲每個鍵和值創建排序向量,並在我的應用程序中使用這些向量。爲了製作矢量,我先 – user2544830 2013-07-03 02:52:59

+0

[STL map - >按值排序?](http://stackoverflow.com/questions/2699060/stl-map-sort-by-value) – 2017-01-01 14:20:13

回答

3

據我記得,std::map會給你迭代器,將通過按鍵排序的項目。只有通過值來遍歷已排序項目並仍然使用地圖的方法是將整個集合重寫爲另一個地圖,其中鍵和值顛倒過來。

+0

我發現使用一個單一的矢量和簡單的發現的東西就更好。 – Jookia 2010-10-22 00:33:03

+2

如果你這樣做,你將失去鍵值對信息。 – 2013-06-25 18:23:44

+0

我指向Oli Charlesworth的回答http://stackoverflow.com/a/5056797/158371 – 2013-12-02 21:08:49