在C++中将不同的键映射到相同的值
所以我搜索了一遍,发现我们可以使用多重映射将一组等效键映射到不同的值。我想知道如何做相反的事情?那是将不同的键映射到相同的值?有没有一个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(它是一套很好的库,并且很好地补充了标准库),我认为选择它是不容易的该解决方案。
'map'不要求这些值是唯一的。只是钥匙。 – cHao
只是反转地图,所以值是关键,反之亦然 –