【发布时间】:2022-01-20 17:57:30
【问题描述】:
我需要一个函数来检查输入 (std::string) 是否唯一并返回其对应的枚举值。
我已经能够只用一个简单的向量来实现这个函数,它会检查输入是否唯一。
它应该返回enumE::HELLO。
我尝试将上面的代码调整为矢量以适应此功能,但我并没有真正做到。
【问题讨论】:
-
在 not found / not unique 情况下应该返回什么?到目前为止,您到底尝试了什么?您在哪里卡住了?
-
听起来您正在尝试向后使用地图。如果您想使用地图查找某些内容,那应该是地图的键,而不是值。
-
@Artyer 在枚举类中,有值 NOTFOUND AND NOTUNIQUE。我尝试使用 for 循环,但随后收到错误消息“没有可行的转换”
-
@SamVarshavchik 我这样做的原因是因为我想将键用作 switch case 值,而这对于字符串是不可能的。
-
嗯,您可以像在矢量上一样在地图上运行循环。像
for (auto& [enumValue, command] : commands) { ... }这样的东西。或者,如果您的编译器不够新,无法支持结构化绑定,那么for (auto& elem : commands) { auto enumValue = elem.first; auto command = elem.second; ...}
标签: c++ algorithm enums key unordered-map