我在找C++中的一個函數,用於交換地圖的內容... 即: 那些現在是密鑰的密鑰現在成爲項目和那些這些項目現在是關鍵。 你能告訴我,如果有什麼關於這件事?在C++中交換密鑰和地圖的值
7
A
回答
13
正如Geoffroy所說,std::map
不允許這種行爲。但是,您可能需要使用類似STL的容器Boost.Bimap - 雙向映射。
Bimap是一種數據結構,它表示兩個集合的元素之間的雙向關係。該容器被設計爲作爲兩個相反的STL地圖工作。集合X與集合Y之間的bimap可以被視爲從X到Y(該視圖將被稱爲左側地圖視圖)或從Y到X(稱爲右側地圖視圖)的地圖。
1
有沒有標準的方法/方法來做到這一點,你必須編寫自己的函數。
這不是一件很難做的事情,但首先要考慮以不同的方式來做。
如果你不得不反轉你的鍵/值,那麼你的代碼可能會很糟糕,儘管你不保留容器的邏輯。
如果您想了解更多信息,請解釋您爲什麼要這麼做。
1
插入地圖中的項放入多重映射 - 第一值,第二鍵,條件是比較原始地圖的兩個值適當的比較功能。一旦插入了所有值鍵項目,multimap將按預期進行排序。任務完成!
1
template <class T1, class T2>
map<T2, T1> swapPairs(map<T1, T2> m) {
map<T2, T1> m1;
for (auto&& item : m) {
m1.emplace(item.second, item.first);
}
return m1;
};
int main() {
map<string, int> m;
m.emplace("111",5);
cout << m.at("111") << endl; // 5
map<int,string> m1 = swapPairs(m);
cout << m1.at(5) << endl; // 111
return 0;
}
相關問題
- 1. 在fsharp的地圖中交換密鑰和值
- 2. 交換JSON密鑰和值
- 3. 在哈希中交換密鑰和值
- 4. 如何在地圖上交換密鑰?
- 5. 如何在一個優雅的地圖中交換密鑰和值
- 6. 在地圖上交換密鑰和瓦爾斯
- 7. 在TreeSet中交換密鑰?
- 8. SSH密鑰交換
- 9. 在Diffie-Hellman密鑰交換
- 10. 從C++地圖中刪除密鑰
- 11. 在PKCS#1中交換公鑰/私鑰OAEP加密/解密
- 12. 在.NET中交換公共密鑰
- 13. 正確的路由密鑰交換在RabbitMQ中交換綁定
- 14. OpenSSL(cpp)和.net RSA密鑰交換
- 15. Google地圖和密鑰更改在線
- 16. Kerberos ssh - 密鑰交換慢
- 17. 交換對稱密鑰
- 18. Aptana SFTP密鑰交換
- 19. Diffie Hellman密鑰交換
- 20. 3DES與Java中的RSA密鑰交換
- 21. Android中的Diffie Hellman密鑰交換
- 22. Java中的Diffie-Hellman密鑰交換
- 23. 如何在ssl密鑰交換期間在wireshark中查看加密密鑰?
- 24. 地圖API密鑰
- 25. SSL密鑰交換加密技術
- 26. 對稱加密密鑰交換
- 27. 加密密鑰交換了解
- 28. RSA加密Java,密鑰交換
- 29. 從一個密鑰到另一個密鑰的紅寶石哈希交換值
- 30. 地圖鍵和值在哈希與靜態密鑰
您可能想對multimap進行此操作,因爲地圖中的值不一定是不同的。 –
我相信我的地圖的價值都是唯一的:沒有 重複 – Safari