标准模板库----list

来源:互联网 发布:小米软件大全下载 编辑:程序博客网 时间:2024/06/06 00:49
//链表list#include<iostream>using namespace std;#include<list>#include<algorithm>/***list的定义和初始化list<int>lst1;//创建空listlist<int>lst2(5);//创建含有5个元素的listlist<int>lst4(lst2);//使用lst2初始化lst4list<int>lst5(lst2.begin(),lst2.end());//同lst4lst(first,last)//声明一个列表,其元素的初始值来源于由区间所指定的序列中的元素push_back():从list的末端插入push_front():从list的头部插入。empty():判断list是否为空resize():如果调用resize(n)将list的长度改为只容纳n个元素,超出的元素将被删除,如果需要扩展那么调用默认构造函数T()将元素加到list末端。如果调用resize(n,val),则扩展元素要调用构造函数T(val)函数进行元素构造,其余部分相同。clear():清空list中所有的元素front():获得list容器中的头部元素back():获得list容器的最后一个元素pop_back():删除最后一个元素pop_front():通过pop_front()删除第一个元素;序列必须不为空assign():第一种情况是:l1.assign(n,val)将 l1中元素变为n个T(val)。  第二种情况是:l1.assign(l2.begin(),l2.end())将l2中的从l2.begin()到l2.end()之间的数值赋值给l1。swap():交换两个链表(两个重载),一个是l1.swap(l2); 另外一个是swap(l1,l2),都可能完成连个链表的交换。reverse():完成list的逆置merge():合并两个链表并使之默认升序。l1.merge(l2,greater<int>()); 调用结束后l2变为空,l1中元素包含原来l1 和 l2中的元素insert():在指定位置插入一个或多个元素l1.insert(l1.begin(),100); 在l1的开始位置插入100。l1.insert(l1.begin(),2,100); 在l1的开始位置插入2个100。l1.insert(l1.begin(),l2.begin(),l2.end());在l1的开始位置插入l2的从开始到结束的所有位置的元素。erase():删除一个元素或一个区域的元素l1.erase(l1.begin()); 将l1的第一个元素删除。l1.erase(l1.begin(),l1.end()); 将l1的从begin()到end()之间的元素删除。*/#include<iostream>using namespace std;#include<list>void display(list<int>l)//输出链表{list<int>::iterator iter;for(iter=l.begin();iter!=l.end();iter++){cout<<*iter<<" ";}cout<<endl;}int main(){list<int>l1;list<int>l2;list<int>l3;list<int>::iterator iter;int i;for(i=0;i<10;i++)//从尾部插入元素到l1{l1.push_back(i);}for( i=0;i<10;i++)//从头部插入元素到l2{l2.push_front(i);}for( i=0;i<10;i++)//从头部插入元素到l3{l3.push_front(i);}cout<<"链表l1:";display(l1);cout<<"链表l2:";display(l2);cout<<"改变l1的长度:";l1.resize(3);//改变链表的长度display(l1);l2.clear();//清空所有元素display(l2);cout<<"l1首元素:"<<l1.front()<<endl;//获得头部元素cout<<"l1尾元素:"<<l1.back()<<endl;//获得尾部元素cout<<"删除l1中的最后一个元素:"<<endl;l1.pop_back();//删除最后一个元素display(l1);cout<<"删除l1中的第一个元素:"<<endl;l1.pop_front();//删除第一个元素display(l1);cout<<"交换链表l1和l3:";swap(l1,l3);cout<<endl;cout<<"l1:";display(l1);cout<<"l3:";display(l3);cout<<"逆置l1后:";l1.reverse();//逆置display(l1);cout<<"合并l1和l3后:";l1.merge(l3,greater<int>());display(l1);cout<<"在l3开始位置插入5:";l3.insert(l3.begin(),5);display(l3);cout<<"在l3开始位置插入10个5:";l3.insert(l3.begin(),10,5);display(l3);cout<<"将l1从begin到end之间的元素删除:";l1.erase(l1.begin(),l1.end());if(l1.empty())cout<<"l1空!"<<endl;return 0;}

原创粉丝点击