简单的vector,新手请教
#include<iostream>#include<vector>#include<string>using namespace std;class A{ public: string data; A(){data="";} A(string d):data(d){} void set(string d){data=d;} void show(){cout<<"data="<<data<<endl;}};//这里为了方便在函数里操作,我直接把容器定义成全局变量,不知道这样写是否非主流,球调教vector<A>vt;//填充数据的函数A Create(){ string data; cout<<"请输入一个数据"<<endl; cin>>data; A tmp(data); return tmp;}//查找函数A& find(){ string i; cout<<"你想查找哪个数据?"<<endl; cin>>i; if(vt.empty()) { cout<<"没有这个数据!"<<endl; A tmp;//这里返回一个局部变量,在main里我定义result来接这个tmp,但隐约记得有人说过不要返回一个局部变量云云... return tmp; } else { vector<A>::iterator iter=vt.begin(); while(iter!=vt.end()) { if((*iter).data==i) break; else iter++; } if(iter==vt.end()) { cout<<"没有这个数据!"<<endl; A tmp; return tmp; } else { cout<<"找到这个数据"<<endl; (*iter).show(); return *iter; } }}int main(){ int count=0; bool flag; //填充数据 do { A tmp; tmp=Create(); vt.push_back(tmp); count++; cout<<"是否继续输入?(1/0)"<<endl; cin>>flag; }while(count<=100 && flag); vector<A>::iterator iter=vt.begin(); //输出 for(;iter!=vt.end();iter++) (*iter).show(); //查找 A result; while(1) { result=find();//用个result来接find()返回的局部变量 //这里我是想看一下局部变量传递出来后的效果,发现找不到的话是个随机数 cout<<"此时result.data="<<result.data<<endl; } return 0;}
if(iter==vt.end()) { cout<<"没有这个数据!"<<endl; A tmp; return tmp; }
#include<iostream>#include<vector>#include<string>using namespace std;class A{ public: string data; A(){data="";} A(string d):data(d){} void set(string d){data=d;} void show(){cout<<"data="<<data<<endl;}};//这里为了方便在函数里操作,我直接把容器定义成全局变量,不知道这样写是否非主流,球调教vector<A>vt;//填充数据的函数A Create(){ string data; cout<<"请输入一个数据"<<endl; cin>>data; A tmp(data); return tmp;}//查找函数vector<A>::iterator find(){ vector<A>::iterator iter=vt.begin(); string i; cout<<"你想查找哪个数据?"<<endl; cin>>i; if(vt.empty()) { cout<<"没有这个数据!"<<endl; return iter; } else { while(iter!=vt.end()) { if((*iter).data==i) break; else iter++; } if(iter==vt.end()) { cout<<"没有这个数据!"<<endl; return iter; } else { cout<<"找到这个数据"<<endl; (*iter).show(); return iter; } }}int main(){ int count=0; bool flag; //填充数据 do { A tmp; tmp=Create(); vt.push_back(tmp); count++; cout<<"是否继续输入?(1/0)"<<endl; cin>>flag; }while(count<=100 && flag); vector<A>::iterator iter=vt.begin(); //输出 for(;iter!=vt.end();iter++) (*iter).show(); //查找 while(1) { iter=find();//用个result来接find()返回的局部变量 //这里我是想看一下局部变量传递出来后的效果,发现找不到的话是个随机数 if(iter != vt.end()) cout<<"此时data="<<(*iter).data<<endl; } return 0;}