由一段代码说开去——list
1 #include <list>//双向循环链表 2 #include <iostream> 3 #include <algorithm> 4 using namespace std; 5 int main() 6 { 7 list<int> L; 8 L.push_back(2); 9 L.push_back(1); 10 L.push_back(5); 11 //尾部元素扩张 12 L.push_front(8); 13 //头部元素扩张 14 list<int>::iterator it; 15 it=L.begin(); 16 L.insert(++it,2);//中间插入; 17 for(it=L.begin();it!=L.end();it++) 18 { 19 cout<<*it<<" ";//向前遍历 20 } 21 cout<<endl; 22 23 L.remove(2);//定值删除 24 L.sort();//降序排列 25 list<int>::reverse_iterator ri=L.rbegin(); 26 for(;ri!=L.rend();ri++) 27 { 28 cout<<*ri<<" ";//反向遍历 29 } 30 cout<<endl; 31 32 it=find(L.begin(),L.end(),8);//查找元素 33 if(it!=L.end()) 34 { 35 cout<<*it<<endl;; 36 } 37 else 38 { 39 cout<<"Not found.\n"; 40 } 41 cin.get(); 42 return 0; 43 }
1.list是双向循环链表,和vector是两个具有代表性的东西,
vector是顺序表的结构
2.list既然是链表了就方便头尾中插入删除
但是不方便随机访问 嗯 则个插入删除啊 就是比较灵活的
可以 push_front()头插入 push()_back();尾插入
都只需要一个参数表明插入的元素;
也可以insert(迭代器,元素)来顶点插入;
3.list的删除功能就相当强大了,有remove(a);删除和a相等的所有元素,
unique();让所有元素在list内独一无二;
还有insert对应的erase ,push_front()对应的pop_front
push_back对应的pop_back();
4.list的sort功能可以按元素降序排列,不需要参数即可,
5.list的find功能还是比较强大的除了红黑树外 基本上也就它用了有意义吧,
但是find不是他的成员方法;
6.由list引出的一些模型 如先入后出的stack
先入先出的 queue及其变形priority_queue()都是不错的模版,
有机会画个表格总结一下.
作者:在河之博
出处:http://www.cnblogs.com/dragonfive/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。