标准库中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;
}