将不同的键映射到c ++中的相同值

时间:2016-04-15 04:00:16

标签: c++

所以我四处搜索,发现我们可以使用多地图将一组等效键映射到不同的值。我想知道如何反过来?那是将不同的键映射到相同的值?是否有stl数据结构?

2 个答案:

答案 0 :(得分:3)

普通std::map(或std::unordered_map)可以做到这一点。您可以选择如何做到这一点:

  • 正常键值存储,您可以根据需要复制值
  • 普通键值存储,但值是指向可共享的实际数据的指针,可选择使用std::shared_ptr
  • 使用某种结构(或许std::tuple)来收集密钥(虽然处理这个问题可能比处理它更麻烦,我真的不推荐)
  • 使用Boost multi-index containers

使用Boost,您可以使用一个现成的解决方案,如果您已经在项目中使用Boost(它是一组很棒的库,并且很好地补充了标准库)我认为这是一个明智的选择那个解决方案。

答案 1 :(得分:0)

您可以拥有 <div id="gamearea4x4"> <div class="row1" id="board11" onmouseover="ImageOnHover(this.id)" onmouseout="ImageOnOut(this.id)" onclick="ImageOnClick(this.id)"></div> <div class="row1" id="board12" onmouseover="ImageOnHover(this.id)" onmouseout="ImageOnOut(this.id)" onclick="ImageOnClick(this.id)"></div>) <div class="row1" id="board13" onmouseover="ImageOnHover(this.id)" onmouseout="ImageOnOut(this.id)" onclick="ImageOnClick(this.id)"></div> ,以便多个键映射到相同的值。没有什么可以反对的。但是,您可能正在寻找的是能够找到映射到给定值的所有键而不迭代整个映射。我认为没有任何此类数据结构。