
标准库中list的用法
标准库中list的用法
转自
.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;
jd();
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;
ad();
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;
aad();
ccd();
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;
iid();
jjd();
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;
i0d();
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;
i2d();
for(i4=li1.rbegin();i4!=i2;i4++)
{
cout<<(*i4)<<"
";
}
cout<<endl<<"--------------------------------------"<<endl;
(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;
}