几个容器比较容易混淆的方法(推荐)

来源:互联网 发布:python 5分钟执行一次 编辑:程序博客网 时间:2024/05/15 06:29

vector:

iterator insert(iterator it, const T& x = T());

void insert(iterator it, size_type n, const T& x);

void insert(iterator it, const_iterator first, const_iterator last);

iterator erase(iterator it);

iterator erase(iterator first, iterator last);

list:

iterator insert(iterator it, const T& x = T());  //list没有下标操作 [],at()

void insert(iterator it, size_type n, const T& x);

void insert(iterator it,const_iterator first, const_iterator last);

void insert(iterator it,const T *first, const T *last);

iterator erase(iterator it);

iterator erase(iterator first, iterator last);

map:

pair<iterator, bool> insert(const value_type& x);

iterator insert(iterator it, const value_type& x);

void insert(const value_type *first, const value_type *last);

iterator erase(iterator it);

iterator erase(iterator first, iterator last);

size_type erase(const Key& key);

set:

 pair<iterator, bool> insert(const value_type& x);

iterator insert(iterator it, const value_type& x);

void insert(InIt first, InIt last);

iterator erase(iterator it);

iterator erase(iterator first, iterator last);

size_type erase(const Key& key);

 

下面的代码是一一对应上面的函数原型的:

vector:

#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main(){
 int a[]={1,2,3,4,5,6,7,8,9,10};
 vector<int>v(a,a+10);
 for(vector<int>::iterator itera=v.begin();itera!=v.end();++itera){
  cout<<*itera<<" ";
 }
 cout<<endl;
 vector<int>::iterator it1=v.insert(v.begin()+2,10086);//在指定迭代器前面插入一个元素,返回一个迭代器,指向插入的元素
 cout<<*it1<<endl;
 for(vector<int>::iterator iterb=v.begin();iterb!=v.end();++iterb){
  cout<<*iterb<<" ";
 }
 cout<<endl;
 system("pause");
 return 0;
}

 
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(){
 int a[]={1,2,3,4,5,6,7,8,9,10};
 vector<int>v(a,a+10);
 for(vector<int>::iterator itera=v.begin();itera!=v.end();++itera){
  cout<<*itera<<" ";
 }
 cout<<endl;
 v.insert(v.begin()+2,5,10086);
 for(vector<int>::iterator iterb=v.begin();iterb!=v.end();++iterb){
  cout<<*iterb<<" ";
 }
 cout<<endl;
 
 system("pause");
 return 0;
}
 
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(){
 int a[]={1,2,3,4,5,6,7,8,9,10};
 int b[]={11,22,33,44,55,66,77,88,99,1010};
 vector<int>va(a,a+10);
 vector<int>vb(b,b+10);
 for(vector<int>::iterator itera=va.begin();itera!=va.end();++itera){
  cout<<*itera<<" ";
 }
 cout<<endl;
 va.insert(va.begin()+5,vb.begin(),vb.end());
 for(vector<int>::iterator iterb=va.begin();iterb!=va.end();++iterb){
  cout<<*iterb<<" ";
 }
 cout<<endl;
 system("pause");
 return 0;
}
 

#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(){
 int a[]={1,2,3,4,5,6,7,8,9,10};
 vector<int>v(a,a+10);
 for(vector<int>::iterator itera=v.begin();itera!=v.end();++itera){
  cout<<*itera<<" ";
 }
 cout<<endl;
 vector<int>::iterator it=v.erase(v.begin()+4);//返回一个迭代器,指向被删除的后一个元素
 cout<<*it<<endl;
 for(vector<int>::iterator iterb=v.begin();iterb!=v.end();++iterb){
  cout<<*iterb<<" ";
 }
 cout<<endl;
 system("pause");
 return 0;
}

 

#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(){
 int a[]={1,2,3,4,5,6,7,8,9,10};
 vector<int>v(a,a+10);
 for(vector<int>::iterator itera=v.begin();itera!=v.end();++itera){
  cout<<*itera<<" ";
 }
 cout<<endl;
 vector<int>::iterator it=v.erase(v.begin()+3,v.begin()+6);//返回一个迭代器,指向被删除的后一个元素
 cout<<*it<<endl;
 for(vector<int>::iterator iterb=v.begin();iterb!=v.end();++iterb){
  cout<<*iterb<<" ";
 }
 cout<<endl;
 system("pause");
 return 0;
}

list:

#include<iostream>
#include<string>
#include<list>
using namespace std;
int main(){
 int a[]={1,2,3,4,5,6,7,8,9,10};
 list<int>l(a,a+10);
 for(list<int>::iterator itera=l.begin();itera!=l.end();++itera){
  cout<<*itera<<" ";
 }
 cout<<endl;
 list<int>::iterator it=l.begin();
 for(int i=0;i<3;++i){//因为list的迭代器不支持+操作,不能l.begin()+3
  ++it;
 }
 list<int>::iterator ite=l.insert(it,10086);
 cout<<*ite<<endl;
 for(list<int>::iterator iterb=l.begin();iterb!=l.end();++iterb){
  cout<<*iterb<<" ";
 }
 cout<<endl;
 system("pause");
 return 0;
}

#include<iostream>
#include<list>
#include<string>
using namespace std;
int main(){
 int a[]={1,2,3,4,5,6,7,8,9,10};
 list<int>l(a,a+10);
 for(list<int>::iterator itera=l.begin();itera!=l.end();++itera){
  cout<<*itera<<" ";
 }
 cout<<endl;
 l.insert(l.end(),5,10086);
 for(list<int>::iterator iterb=l.begin();iterb!=l.end();++iterb){
  cout<<*iterb<<" ";
 }
 cout<<endl;
 system("pause");
 return 0;
}

 

#include<iostream>
#include<list>
#include<string>
#include<vector>
using namespace std;
int main(){
 int a[]={1,2,3,4,5,6,7,8,9,10};
 int b[]={11,22,33,44,55,66,77,88,99,1010};
 list<int>l(a,a+10);
 vector<int>v(b,b+10);
 for(list<int>::iterator itera=l.begin();itera!=l.end();++itera){
  cout<<*itera<<" ";
 }
 cout<<endl;
 l.insert(l.begin(),v.begin()+3,v.begin()+6);
 for(list<int>::iterator iterb=l.begin();iterb!=l.end();++iterb){
  cout<<*iterb<<" ";
 }
 cout<<endl;
 system("pause");
 return 0;
}

 

#include<iostream>
#include<list>
#include<string>
using namespace std;
int main(){
 int a[]={1,2,3,4,5,6,7,8,9,10};
 list<int>l(a,a+10);
 for(list<int>::iterator itera=l.begin();itera!=l.end();++itera){
  cout<<*itera<<" ";
 }
 cout<<endl;
 list<int>::iterator it=l.begin();
 for(int i=0;i<3;++i){
  ++it;
 }
 list<int>::iterator ite=l.erase(it);//返回一个迭代器,指向被删除的元素的后一个元素
 cout<<*ite<<endl;
 for(list<int>::iterator iterb=l.begin();iterb!=l.end();++iterb){
  cout<<*iterb<<" ";
 }
 cout<<endl;
 system("pause");
 return 0;
}


#include<iostream>
#include<list>
#include<string>
using namespace std;
int main(){
 int a[]={1,2,3,4,5,6,7,8,9,10};
 list<int>l(a,a+10);
 for(list<int>::iterator itera=l.begin();itera!=l.end();++itera){
  cout<<*itera<<" ";
 }
 cout<<endl;
 list<int>::iterator it1=l.begin();
 for(int i=0;i<3;++i){
  ++it1;
 }
 list<int>::iterator it2=l.begin();
 for(int j=0;j<5;++j){
  ++it2;
 }
 list<int>::iterator ite=l.erase(it1,it2);//返回一个迭代器,指向被删除元素的后一个元素
 cout<<*ite<<endl;
 for(list<int>::iterator iterb=l.begin();iterb!=l.end();++iterb){
  cout<<*iterb<<" ";
 }
 cout<<endl;
 system("pause");
 return 0;
}

 

普及一下pair<type,type>的知识:

#include<iostream>
#include<utility>
#include<string>
using namespace std;
int main(){
 string name="zhang";
 int age=22;
 pair<string,int>p(name,age);
 cout<<p.first<<"------->"<<p.second<<endl;
 system("pause");
 return 0;
}

 

map:

#include<iostream>
#include<string>
#include<map>
using namespace std;
int main(){
 map<string,int>m;
 string name;
 int age;
 while(cin>>name>>age){
  pair<map<string,int>::iterator,bool>ret=m.insert(make_pair(name,age));
  if(!ret.second){
   (*ret.first).second++;
  }
 }
 for(map<string,int>::iterator itera=m.begin();itera!=m.end();++itera){
  cout<<(*itera).first<<"------->"<<(*itera).second<<endl;
 }
 system("pause");
 return 0;
}

 

#include<iostream>
#include<string>
#include<map>
using namespace std;
int main(){
 map<string,int>m;
 string name;
 int age;
 while(cin>>name>>age){
  m.insert(make_pair(name,age));
 }
 for(map<string,int>::iterator itera=m.begin();itera!=m.end();++itera){
  cout<<(*itera).first<<"---->"<<(*itera).second<<endl;
 }
 cout<<endl;
 cin.clear();

 map<string,int>::iterator it=m.begin();
 ++it;
 cout<<"input type_value"<<endl;
 cin>>name>>age;
 map<string,int>::iterator ite=m.insert(it,make_pair(name,age));
 cout<<(*ite).first<<"------->"<<(*ite).second<<endl;

 for(map<string,int>::iterator iterb=m.begin();iterb!=m.end();++iterb){
  cout<<(*iterb).first<<"----->"<<(*iterb).second<<endl;
 }
 system("pause");
 return 0;
}

 
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main(){
 map<string,int>m;
 map<string,int>mm;
 string name;
 int age;
 cout<<"第一组数据"<<endl;
 while(cin>>name>>age){
  m.insert(make_pair(name,age));
 }
 for(map<string,int>::iterator itera=m.begin();itera!=m.end();++itera){
  cout<<(*itera).first<<"------->"<<(*itera).second<<endl;
 }
 cout<<endl;
 
 cout<<"第二组数据"<<endl;
 cin.clear();
 while(cin>>name>>age){
  mm.insert(make_pair(name,age));
 }
 for(map<string,int>::iterator iterb=mm.begin();iterb!=mm.end();++iterb){
  cout<<(*iterb).first<<"------->"<<(*iterb).second<<endl;
 }
 cout<<endl;
 cout<<"把第二组数据插入到第一组数据得到:"<<endl;
 mm.insert(m.begin(),m.end());
 for(map<string,int>::iterator iterc=mm.begin();iterc!=mm.end();++iterc){
  cout<<(*iterc).first<<"------>"<<(*iterc).second<<endl;
 }
 cout<<endl;
 system("pause");
 return 0;
}
 
 
 
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main(){
 map<string,int>m;
 string name;
 int age;
 while(cin>>name>>age){
  m.insert(make_pair(name,age));
 }
 for(map<string,int>::iterator itera=m.begin();itera!=m.end();++itera){
  cout<<(*itera).first<<"----->"<<(*itera).second<<endl;
 }
 cout<<endl;
 cout<<"*************"<<endl;
 map<string,int>::iterator it=m.begin();
 ++it;                           //map的迭代器也是不能+操作的,只能用++操作
 map<string,int>::iterator ite=m.erase(it);
 cout<<(*ite).first<<"----->"<<(*ite).second<<endl;//返回一个迭代器,指向被删除元素的下一个
 cout<<"**************"<<endl;
 for(map<string,int>::iterator iterb=m.begin();iterb!=m.end();++iterb){
  cout<<(*iterb).first<<"-------->"<<(*iterb).second<<endl;
 }
 cout<<endl;
 system("pause");
 return 0;
}
 
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main(){
 map<string,int>m;
 string name;
 int age;
 while(cin>>name>>age){
  m.insert(make_pair(name,age));
 }
 for(map<string,int>::iterator itera=m.begin();itera!=m.end();++itera){
  cout<<(*itera).first<<"----->"<<(*itera).second<<endl;
 }
 map<string,int>::iterator it1=m.begin();
 map<string,int>::iterator it2=m.begin();
 for(int i=0;i<3;i++){
  ++it1;
 }
 for(int j=0;j<6;++j){
  ++it2;
 }
 cout<<"***************************"<<endl;
 map<string,int>::iterator ite=m.erase(it1,it2);//返回一个迭代器,指向被删除元素的下一个
 cout<<(*ite).first<<"----->"<<(*ite).second<<endl;
 cout<<"***************************"<<endl;
 for(map<string,int>::iterator iterb=m.begin();iterb!=m.end();++iterb){
  cout<<(*iterb).first<<"------>"<<(*iterb).second<<endl;
 }
 system("pause");
 return 0;
}
 
 
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main(){
 map<string,int>m;
 string name;
 int age;
 while(cin>>name>>age){
  m.insert(make_pair(name,age));
 }
 for(map<string,int>::iterator itera=m.begin();itera!=m.end();++itera){
  cout<<(*itera).first<<"----->"<<(*itera).second<<endl;
 }
 cout<<"input the keytype you want to delete"<<endl;
 cin.clear();
 cin>>name;
 int t=m.erase(name);
 cout<<t<<endl;
 cout<<"***************"<<endl;
 for(map<string,int>::iterator iterb=m.begin();iterb!=m.end();++iterb){
  cout<<(*iterb).first<<"----->"<<(*iterb).second<<endl;
 }
 system("pause");
 return 0;
}
 
 
set:
#include<iostream>
#include<string>
#include<set>
using namespace std;
int main(){
 set<string>s;
 string name;
 while(cin>>name){
  s.insert(name);
 }
 for(set<string>::iterator itera=s.begin();itera!=s.end();++itera){
  cout<<*itera<<" ";
 }
 cout<<endl;
 system("pause");
 return 0;
}
由于set的操作跟map的操作及其相似,这里不一一列举,有什么不清楚的,可以回帖。
 
 
 
原创粉丝点击