我在找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