STL基础系列之--list

来源:互联网 发布:淘宝平价女装 编辑:程序博客网 时间:2024/06/05 03:48

 

     链表(list)双向链表容器不支持随机访问,访问链表元素需要指出从链表的某个端点开始,插入和删操作所花费的时间是固定的,和该元素的位置无关。

在任何位置插入和删除动作都很快,不像vector只在末尾进行操作。

 

STL list容器由于采用了双向迭代器,不支持随机访问,所以标准库的merge(), sort()等功能函数都不适用,list单独实现了merge(),sort()等函数。

//STL--list总结//STL list容器由于采用了双向迭代器,不支持随机访问,所以标准库的merge(), sort()等功能函数都不适用,list单独实现了merge(),sort()等函数。#include<iostream>#include<list>#include<algorithm>#include<cstdio>#include<ctime>#define MAXN 10using namespace std;void output(int n){cout<<n<<" ";}bool compare(int a,int b){return (a>b);}bool myFun(int n){return (n==9);}int main(){list<int> list1;cout<<"list1:"<<endl;int i;      srand(time(NULL));      for (i = 0; i < MAXN; ++i)  list1.push_back(rand()%100);   cout<<"原始数字:";for_each(list1.begin(),list1.end(),output);cout<<endl;list1.sort(compare);//注意排序调用方式cout<<"降序排列:";for_each(list1.begin(),list1.end(),output);cout<<endl;list1.sort();//注意排序调用方式 cout<<"升序排列:";for_each(list1.begin(),list1.end(),output);cout<<endl;list<int> list2;cout<<"list2:"<<endl;list2.assign(list1.begin(),list1.end());cout<<"原始数字:";for_each(list2.begin(),list2.end(),output);cout<<endl;list2.push_back(101);//在list的末尾添加一个元素cout<<"加入元素后:";for(list<int>::iterator it=list2.begin();it!=list2.end();it++){cout<<*it<<" ";}cout<<endl;list1.swap(list2);cout<<"交换后list1:";for_each(list1.begin(),list1.end(),output);cout<<endl;cout<<"交换后list2:";for_each(list2.begin(),list2.end(),output);cout<<endl;//list2.clear();//清空链表//list2.push_front(100);//在list的头部添加一个元素list2.merge(list1);//必须是有序序列,不然vs2012出错,不能合并cout<<"list1,list2合并后:";for_each(list2.begin(),list2.end(),output);cout<<endl;cout<<"合并后list1:";for_each(list1.begin(),list1.end(),output);//合并后list1为空cout<<endl;list2.unique();cout<<"list2删除重复元素:";for_each(list2.begin(),list2.end(),output);cout<<endl;list2.insert(list2.begin(),2,9);//在指定位置插入两个元素cout<<"插入两个元素后:";for_each(list2.begin(),list2.end(),output);cout<<endl;list2.remove_if(myFun);//遍历一遍listcout<<"删除指定两个元素后:";for_each(list2.begin(),list2.end(),output);cout<<endl;system("pause");return 0;}


 

0 0