C++中如何直接接收用户输入的对象并传递给函数
实现方案
核心思路
用键值对映射(不同语言中可称为字典、对象字面量、哈希表)直接绑定用户输入值与待传入的对象,通过用户输入的索引/标识直接从映射中取出对应对象,时间复杂度为O(1),比多层if/else-if的*O(n)*效率更高,后续新增可选对象时只需要加一行映射项,维护成本更低。
不同语言的实现示例
Python 示例
# 预先定义可选对象 obj1 = {"name": "对象1"} obj2 = {"name": "对象2"} obj3 = {"name": "对象3"} # 建立用户输入到对象的映射表 obj_map = { "1": obj1, "2": obj2, "3": obj3 } # 获取用户输入 user_input = input("请输入对象对应的编号:") # 直接取出对应对象,用get方法兼容输入不存在的边界情况 target_obj = obj_map.get(user_input) if target_obj: your_function(target_obj) else: print("输入的编号不存在")
JavaScript 示例
// 预先定义可选对象 const obj1 = {name: "对象1"} const obj2 = {name: "对象2"} const obj3 = {name: "对象3"} // 映射表 const objMap = { "1": obj1, "2": obj2, "3": obj3 } // 获取用户输入 const userInput = prompt("请输入对象对应的编号:") const targetObj = objMap[userInput] if (targetObj) { yourFunction(targetObj) } else { alert("输入的编号不存在") }
额外优势
- 后续新增可选对象时,不需要修改逻辑代码,只需要在映射表中新增对应键值对即可
- 映射表可以动态生成,比如从配置文件、数据库中读取可选对象的关联关系,不需要硬编码分支逻辑
- 代码可读性更高,所有可选的输入和对应对象的关系一目了然,不需要逐行读分支判断
内容的提问来源于stack exchange,提问作者Saud Khan
相关产品推荐
相关产品推荐

