写的让我最服的代码
题目描述
在给定的数组中删除一个数。
详细看牛客
然后我给出代码给大家看看
#include<bits/stdc++.h>
using namespace std;
int main(){
int m,n;
while(cin>>m){
vector<int> vec;
for (int i = 1; i <= m; i++) {
int num;
cin >> num;
vec.push_back(num);
}
cin >> n;
for (auto it = vec.begin(); it != vec.end(); ) {
if (*it == n) {
it = vec.erase(it);
break;
} else {
it++;
}
}
//vector<int>::iterator i
for(int i=0;i<m-1;i++){
cout<<vec[i]<<" ";
}
cout<<"\n";
}
return 0;
}
一开始看代码是没有是什么问题的可是在提交的时候却是错误的
大家还是先看我的思路
这段代码是一个简单的程序,它读取多组输入,并通过删除数组中指定值的元素后输出结果。
首先,在`main()`函数中定义了两个整数变量`m`和`n`,用于保存用户输入的数值。
然后,进入一个`while`循环,条件是通过`cin`读取到的`m`的值。这意味着会一直读取输入,直到输入不符合整数类型为止。
在每次循环开始时,创建一个空的整型向量`vec`,用于存储用户输入的整数。
接下来,使用一个`for`循环,从1循环到`m`次,读取`m`个整数,并通过`vec.push_back(num)`将它们添加到向量`vec`中。
然后,通过`cin`读取`n`的值,表示要删除的指定元素。
接下来,使用一个迭代器遍历向量`vec`。如果当前迭代器指向的元素等于`n`,则使用`vec.erase(it)`函数将该元素从向量中删除,并使用 `break` 关键字退出循环。
如果迭代器指向的元素不等于`n`,则通过`it++`将迭代器移动到下一个位置,并继续进行下一次迭代。
最后,使用一个`for`循环从0循环到`m-1`,遍历向量`vec`并输出其中的元素(去掉了刚刚删除的元素),同时在每个元素后面输出一个空格。
最后,输出一个换行符,完成本次循环的输出过程。
这样循环执行,直到输入不再满足`cin>>m`的条件,即用户停止输入,程序结束运行。
但是我忘记了有种可能就是找不道我们想要的数
正确的代码要加上
//前面的it=vec.erase(it);的循环要加a=1的条件
for(int i=0;i<(a==0?m:m-1);i++)
//然后每次循环要更新a
a=0
然后就这样因为一小问题,就浪费我100个小时(夸张),反正有点长>
本文作者:2c237c6
本文链接:https://www.cnblogs.com/27dCnc/p/18568695
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步