于是四处搜索,发现我们可以使用multi-map将一组等价的键映射到不同的值。我想知道如何做相反的事情?那就是将不同的键映射到同一个值?是否有一个 STL 数据结构?
最佳答案
普通的 std::map
(或 std::unordered_map
)可以做到这一点。您有几种选择:
- 普通键值存储,您可以根据需要在其中复制值
- 普通键值存储,但值是指向可以共享的实际数据的指针,可选择使用
std::shared_ptr
- 使用某种结构(可能是
std::tuple
)来收集 key (尽管处理这个可能比它的值(value)更麻烦,我真的不推荐这样做) - 使用Boost multi-index containers
有了 Boost,你就有了一个可以直接使用的现成解决方案,如果你已经在你的项目中使用了 Boost(它是一组很棒的库,并且很好地补充了标准库),我认为选择它是一件很容易的事那个解决方案。
关于c++ - 在 C++ 中将不同的键映射到相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36638018/