题目要求:
1、输入一串整数,输入指令。
要求:(1)输入a t,在这串整数后添加整数t。(2)输入c\m\n,用n替换m。(3)输入d t,删除t。(4)输入s排序。
解题思路
这道题的思路很简单的,只要顺着操作就可以了。
注意的点:
删除和替换都是需要将所有符合要求的元素删除和替换,需要多多测试
如果不加上getchar();这条语句,那么就会陷入死循环
学习的点:
vector 删除多个元素的方法
vector替换函数
getchar() getch()函数的使用方法,这个还需要多次总结,现在还有些模糊
代码如下:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void display(vector<int> v){
vector<int>::iterator it;
cout<<"输出数据:";
for(it=v.begin();it!=v.end();it++){
cout<<*it<<" ";
}
cout<<endl;
}
int main(){
vector<int> v;
vector<int>::iterator it;
int a;
cout<<"请输入数据,以0结束:"<<endl;
while(cin>>a){
if(a==0)
break;
v.push_back(a);
}
display(v);
char op;
while(true){
cout<<"请输入命令,以e结束:";
cin>>op;
getchar(); //只读取一个字符 ,这句话还挺重要的,学习了,我刚测试了一下,如果是没有这句话,输入aa,这回陷入死循环中
if(op=='a'){
cin>>a;
v.push_back(a);
display(v);
}
if(op=='c'){
char ca,cb;
int ia,ib;
cin>>ca>>ia>>cb>>ib;
/*int f=0;
for(it=v.begin();it!=v.end();it++){
if((*it)==ia){
(*it)=ib;
f = 1;
}
}
if(f==1){
cout<<"替换成功"<<endl;
}else{
cout<<"没有找到匹配数据"<<endl;
}*/
replace(v.begin(),v.end(),ia,ib); //原来vector本身已经有这个函数了
display(v);
}
if(op=='d'){
cin>>a;
for(it=v.begin();it!=v.end();){
if((*it)==a){
it = v.erase(it); //会返回删除元素的下一个元素的迭代器
}else{
it++;
}
} //删除1
/*
//修改之后的代码
for(int i=0;i<v.size();i++){
if(v[i]==a){
it = v.begin()+i;
v.erase(it);
}
}删除2*/
//删除的两段代码都是可以的
display(v);
}
if(op=='s'){
cout<<"按照递增顺序"<<endl;
sort(v.begin(),v.end());
display(v);
cout<<"按照递减顺序"<<endl;
reverse(v.begin(),v.end());
display(v);
}
if(op=='e')
break;
}
return 0;
}