所以我搜索了一遍,发现我们可以使用多重映射将一组等效键映射到不同的值。我想知道如何做相反的事情?那是将不同的键映射到相同的值?有没有一个stl的数据结构?在C++中将不同的键映射到相同的值
回答
您可以有一个std::map
,使多个键映射到相同的值。没有什么反对的。但是,您可能要查找的是能够查找映射到给定值的所有键,而无需遍历整个地图。我不认为有这样的数据结构。
@Sahu Yea其实我创建了一张如下图:std :: map
@ dl23lin,在这种情况下,你应该删除这个问题,并询问你试过的代码,你期望看到的是什么,以及实际看到的是什么。这比这个问题更有用。 –
正常的std::map
(或std::unordered_map
)可以做到这一点。您对如何做几个选择是:
- 普通key-value存储,在那里你复制值需要
- 普通key-value存储,但其中的值是一个指向实际数据可以共享,可选择使用
std::shared_ptr
- 使用某种类型的结构(一
std::tuple
也许)领取钥匙(尽管它可能更多的麻烦处理这比它的价值,没有什么我真的建议) - 使用Boost multi-index containers
借助Boost,您可以使用现成的解决方案,并且如果您已经在项目中使用了Boost(它是一套很好的库,并且很好地补充了标准库),我认为选择它是不容易的该解决方案。
- 1. 键映射到HashMap中的相同值?
- 2. 如何将不同的键映射到相同的值,但只声明一次?
- 3. 映射多个键,相同的值
- 4. 键映射到不同的键
- 5. 多个字段映射到相同的外键的JPA映射
- 6. Jaxb 2将不同的元素映射到相同的属性
- 7. 将两个不同的servlet映射到相同的URL模式
- 8. 将不同的网址映射到相同的视图
- 9. 不同的映射为相同的URL
- 10. 具有相同的hashCode相等的对象不映射到相同值的HashMap
- 11. Emacs相同的键盘映射不同的命令
- 12. 查找多个键映射到相同的值
- 13. 字典与多个键映射到相同的值
- 14. 返回不同值的C++映射
- 15. FluentNHibernate映射与相同的主键
- 16. 在映射中检索不同的值
- 17. 的javascript:映射相同的密钥不同的值
- 18. 2个外键映射到相同的主键问题
- 19. Windows - 将键盘按键映射到与鼠标左键相同的动作
- 20. 用于将多个键映射到相同值的Java数据结构
- 21. 地图串矢量或不同的键映射到一个值
- 22. 将值映射到Pandas中不同数据帧的数据帧
- 23. 将JSON映射到具有不同关键字的Java对象
- 24. Spring Integration Splitter将键映射到不同的通道
- 25. Nibernate映射到两列相同的表
- 26. XML反序列化:不同的XML架构映射到相同的C#类
- 27. 将两个不同的实体映射到同一个表中?
- 28. TFS:映射到不同用户的相同文件夹
- 29. 如何处理映射到相同响应的不同请求?
- 30. JPA onetomany映射不同值
'map'不要求这些值是唯一的。只是钥匙。 – cHao
只是反转地图,所以值是关键,反之亦然 –