You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++如何判断输入变量是否等于多个给定值中的任意一个?

优雅实现方案

方案1:集合包含判断(全语言通用,最高效简洁)

提前把所有目标值存入预定义的集合常量,调用语言内置的包含判断方法即可,语法简洁且查找效率为O(1),远优于多条件或switch写法:

// 预定义全局复用的合法值集合
const ALLOWED_INPUTS = new Set([1, 5, 10, 25, 100])
// 业务逻辑处直接判断
if (ALLOWED_INPUTS.has(user_input)) {
  // 匹配成功逻辑
} else {
  // 匹配失败逻辑
}

其他语言的实现逻辑完全一致:

  • Python:ALLOWED_INPUTS = {1,5,10,25,100},判断用if user_input in ALLOWED_INPUTS:
  • Java:预定义常量private static final Set<Integer> ALLOWED_INPUTS = new HashSet<>(Arrays.asList(1,5,10,25,100));,判断用ALLOWED_INPUTS.contains(userInput)
  • Go:var allowedInputs = map[int]struct{}{1:{},5:{},10:{},25:{},100:{}},判断用if _, ok := allowedInputs[userInput]; ok {

方案2:封装为独立工具函数(复用性最强)

如果需要多处使用该判断逻辑,直接封装成函数即可,不用重复写判断代码:

def is_valid_input(input_val: int) -> bool:
    allowed = {1,5,10,25,100}
    return input_val in allowed

# 任意业务处直接调用
if is_valid_input(user_input):
    # 匹配逻辑

方案3:哈希表映射(适合匹配后有分支逻辑的场景)

如果匹配到不同数值需要执行不同的操作,不想写冗长的switch case,可以用哈希表存储数值和对应逻辑的映射,代码可读性更高:

const inputAction = {
  1: () => handleInput1(),
  5: () => handleInput5(),
  10: () => handleInput10(),
  25: () => handleInput25(),
  100: () => handleInput100()
}

// 调用逻辑
if (inputAction[user_input]) {
  inputAction[user_input]()
} else {
  // 默认兜底逻辑
}

优势说明

  • 后续要新增、删除合法数值,只需要修改预定义的集合/映射表即可,不需要改动业务判断逻辑,可维护性极强
  • 集合查找效率远高于多条件或遍历判断,数值越多性能优势越明显
  • 代码结构清晰,没有冗余的重复判断逻辑

内容的提问来源于stack exchange,提问作者Circlesho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 09:15:03