C++实现vector禁止用户输入重复整数的方法
C++控制台菜单添加数字去重实现方案
核心修改思路
原有代码直接将用户输入存入vector,没有查重环节,仅需在'A'/'a'分支中增加循环校验逻辑即可实现禁止重复值存入的需求,无需改动其他已实现的菜单功能:
- 引入
<algorithm>头文件,调用std::find方法快速判断输入整数是否在list_items中存在 - 拿到用户输入后先做查重,重复则提示错误并要求重新输入,直到拿到不重复的整数再执行存入操作
- 保留原有大小写兼容逻辑,大写A、小写a都可正常触发添加功能
修改后的'A'/'a'分支代码
case 'a': case 'A': while (true) { cout << "Enter an integer to add to the list: "; cin >> list_adder; // 查找输入值是否已存在于列表中 auto it = find(list_items.begin(), list_items.end(), list_adder); if (it != list_items.end()) { // 检测到重复值,提示后重新进入输入环节 cout << "The number " << list_adder << " already exists, please enter a different integer." << endl; } else { // 无重复值,存入列表后跳出输入循环回到主菜单 list_items.push_back(list_adder); cout << list_adder << " added" << endl; break; } } break;
编译注意事项
- 必须在代码头部添加
#include <algorithm>,否则find方法无法正常编译 - 校验逻辑放在
while(true)无限循环中,只有输入不重复的合法整数时才会break跳出循环,避免重复值存入
内容的提问来源于stack exchange,提问作者ABDULLAH -
相关产品推荐
相关产品推荐

