查找地图的映射值

新手上路,请多包涵

C++ 中有没有办法搜索映射的映射值(而不是键),然后返回键?通常,我做 someMap.find(someKey)->second 来获取值,但这里我想做相反的事情并获取键(值和键都是唯一的)。

原文由 wrongusername 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 473
2 个回答

由于 map 的设计方式,您需要对无序数据进行等效的搜索。

 for (auto it = someMap.begin(); it != someMap.end(); ++it)
    if (it->second == someValue)
        return it->first;

原文由 Bill Lynch 发布,翻译遵循 CC BY-SA 4.0 许可协议

结构化绑定(自 C++17 起可用)提供了一种方便的方式来编写与 比尔林奇的回答 中描述的相同的循环,即

for (const auto& [key, value] : someMap)
    if (value == someValue)
        return key;

原文由 lubgr 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题