标准库中list的用法

标准库中list的用法

转自

http://blog.sina.com.cn/s/blog_60e96a410100fy8u.html


#include<list>

#include<iostream>
struct student{
  char *name;
  int age;
  char *city;
  char *tel;
};
int main(void)
{
 
 student s[4] = {
  {"贺礼东",25,"西安","13720557841"},
  {"白娟娟",24,"西安","13720557840"},
  {"石安磊",25,"江西","13389254661"}
 
 };
 using namespace std;
 list<student>l;
 //初始化列表
 l.push_back(s[0]);
 l.push_back(s[1]);
 l.push_back(s[2]);
 
 //遍历列表&&只能使用迭代器的方式&&
 cout<<"姓名 年龄  城市 电话"<<endl;
 cout<<"--------------------------------------"<<endl;
 list<student>::iteratori,j;
 j=l.end();
 for(i=l.begin();i!=j;i++)
 {
  cout<<(*i).name<<" ";
  cout<<(*i).age<<" ";
  cout<<(*i).city<<" ";
  cout<<(*i).tel<<" "<<endl;
 }
 cout<<"--------------------------------------"<<endl;
 
 student s0[] ={
  {"贺东亭",24,"渭南","0913-3668115"}
 };
 l.push_back(s0[0]);
 for(i=l.begin();i!=j;i++)
 {
  cout<<(*i).name<<" ";
  cout<<(*i).age<<" ";
  cout<<(*i).city<<" ";
  cout<<(*i).tel<<" "<<endl;
 }
 cout<<"--------------------------------------"<<endl;
 student s1[] ={
  {"弟 弟",20,"渭南","0913-3794220"}
 };
 l.push_front(s1[0]);
 for(i=l.begin();i!=j;i++)
 {
  cout<<(*i).name<<" ";
  cout<<(*i).age<<" ";
  cout<<(*i).city<<" ";
  cout<<(*i).tel<<" "<<endl;
 }
 cout<<"--------------------------------------"<<endl;
 //链表删除
 
 list<student>::iteratorx,y;
 x=l.begin();
 x++;
 l.erase(x);
   for(i=l.begin();i!=j;i++)
 {
  cout<<(*i).name<<" ";
  cout<<(*i).age<<" ";
  cout<<(*i).city<<" ";
  cout<<(*i).tel<<" "<<endl;
 }
 cout<<"--------------------------------------"<<endl;
 
 list<student>::reverse_iteratora,b;
 a=l.rend();
 for(b=l.rbegin();b!=a;b++)
 {
       cout<<(*b).name<<" ";
  cout<<(*b).age<<" ";
  cout<<(*b).city<<" ";
  cout<<(*b).tel<<" "<<endl;
 }
 cout<<"--------------------------------------"<<endl;
 list<char>lc0;
 list<char>lc1;
 lc0.push_back('a');
 lc0.push_back('b');
 lc1.push_back('z');
 lc1.push_back('w');
 list<char>::iteratoraa,bb,cc;
 aa=lc0.end();
 cc=lc1.end();
 for( bb=lc0.begin();bb!=aa;bb++)
 {
  cout<<(*bb)<<endl;
 }
   cout<<"--------------------------------------"<<endl;
 for( bb=lc1.begin();bb!=cc;bb++)
 {
  cout<<(*bb)<<endl;
 }
   cout<<"--------------------------------------"<<endl;
 //交换函数swap()
 lc0.swap(lc1);
 list<char>::iteratorii,jj,yy;
 ii=lc0.end();
 jj=lc1.end();
    for(yy=lc0.begin();yy!=ii;yy++)
 {
  cout<<(*yy)<<endl;
 }
   cout<<"--------------------------------------"<<endl;
 for( yy=lc1.begin();yy!=jj;yy++)
 {
  cout<<(*yy)<<endl;
 }
  cout<<"--------------------------------------"<<endl;
   //链表的归并
  list<int> li0;
  list<int> li1;
   for(inta0=0;a0<10;a0++)
   {
   li0.push_back(a0);
   }
  list<int>::iterator i0,i1;
   i0=li0.end();
  for(i1=li0.begin();i1!=i0;i1++)
   {
   cout<<(*i1)<<" ";
   }
  cout<<endl<<"--------------------------------------"<<endl;
   for(inti3=0;i3<5;i3++)
   {
   li1.splice(li1.begin(),li0,li0.begin());//li0中的li0.begin()位置的元素将被删除,将添加到li1.begin()位置
   }
  for(i1=li0.begin();i1!=i0;i1++)
   {
   cout<<(*i1)<<" ";
   }
  cout<<endl<<"--------------------------------------"<<endl;
  list<int>::reverse_iteratori2,i4;
   i2=li1.rend();
  for(i4=li1.rbegin();i4!=i2;i4++)
   {
   cout<<(*i4)<<" ";
   }
  cout<<endl<<"--------------------------------------"<<endl;
   li0.merge(li1);
  for(i1=li0.begin();i1!=i0;i1++)
   {
   cout<<(*i1)<<" ";
   }
  cout<<endl<<"--------------------------------------"<<endl;
   //链表的排序
   li0.sort();
  for(i1=li0.begin();i1!=i0;i1++)
   {
   cout<<(*i1)<<" ";
   }
  cout<<endl<<"--------------------------------------"<<endl;
  //li0.unique()函数是将li0中连续重复的元素只保留一个
   return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值