STL 之 list
来源:互联网 发布:沈阳电明数据恢复 编辑:程序博客网 时间:2024/05/17 08:25
list常用函数表
1,push_back
在末尾添加元素
2,pop_back
移除末尾元素
3,push_front
在开头添加元素
4,pop_front
移除开头元素
5,begin
6,end
7,insert
1,li.insert(postion, val)
2,li.insert(positino, n, val)
3,li.insert(position, first, last)
用法类似vector
8,erase
1,li.erase(postion):移除position位置的节点
2,li.erase(first, last):移除first-last位置的节点
返回迭代器指向的下一个
9,resize
li.resize(n, val=0):把列表大小置为n,多余补足val
10,unique
1,li.unique():连续相同的数只留一个
2,li.unique(cmp):按比较函数进行删除与保留
11,splice
1,li.splice(position,l2):把列表l2放到li的position前,并清空l2
2,li.splice(position,l2, iter):把l2的iter节点放到li的position前,并删掉l2的iter节点
3,li.splice(position,l2,first,last):把l2的first-last节点放到li的position前,并删掉l2
的first-last的节点
12,reverse
反转列表
13,sort
li.sort(cmp=less<T>()):默认按照非递减排序
14,merge
1,li.merge(l2):把l2置于li之前,并清空l2
2,li.merge(l2, cmp):cmp比较函数,依次进行比较操作
例:
li:10,9,19,8;
l2:11,4,9
cmp:greater<int>()
result:11,10,9,19,9,8
15,swap
交换两个列表
16,rbegin
17,rend
18,remove
remove(val)
19,remove_if
li.remove_if(cmp):把满足函数cmp的节点删掉
20,back
21,empty
22,clear
23,assign
#include <iostream>#include <list>#include <algorithm>#include <cstdlib>#include <iterator>using namespace std; void O(list<int>li, char *s){ cout << s << endl; copy(li.begin(), li.end(), ostream_iterator<int>(cout, " ")); if (li.empty()) cout << "E"; cout << endl << endl;}bool cmp(int a, int b){ return a > b;}bool cmp0(int a){ return a > 10;}int main(){ list<int>li, l2; list<int>::iterator iter; list<int>::reverse_iterator rev_iter; int i, j, k; for (i = 0; i < 10; i++) li.push_back(i); for (i = 0; i < 10; i++) l2.push_back(rand()%1000); O(li, "----push_back----"); li.pop_back(); O(li, "----pop_back----"); li.push_front(10); O(li, "----push_front----"); li.pop_front(); O(li, "----pop_front----"); iter = find(li.begin(), li.end(), 3); if (iter != li.end()) { li.insert(iter, 100); //不改变原来迭代器 O(li, "----insert----"); cout << "erase = " << *li.erase(iter) << endl; O(li, "----erase----"); } else li.push_back(999); O(li, "----after insert----"); iter = find(li.begin(), li.end(), 4); li.erase(++iter,li.end()); O(li, "----erase----"); li.insert(li.begin(), 2, -1); O(li, "----insert----"); O(l2, "----l2 parameter----"); li.insert(li.begin(), l2.begin(), l2.end()); O(li, "----insert-----"); li.remove(-1); O(li, "----remove----"); li.remove_if(cmp0); O(li, "-----li-----"); li.resize(30, -2); O(li, "-----resize----"); li.unique(); O(li, "----unique----"); li.unique(cmp); O(li, "----unique - li----"); li.resize(10); O(l2, "----v2----"); iter = find(li.begin(), li.end(), 0); li.splice(iter, l2); O(li, "----splice----"); cout << *iter << endl; O(l2, "-----v2----"); l2.splice(l2.begin(), li, iter); O(l2, "----splice l2----"); O(li, "----splice li----"); li.splice(li.begin(), l2, l2.begin(), l2.end()); O(l2, "----splice - l2----"); O(li, "----splice - li----"); li.reverse(); O(li, "----reverse - li----"); li.sort(greater<int>()); O(li, "----sort - li----"); li.resize(5); li.resize(8, -2); O(li, "----resize - li----"); for (i = 0; i < 6; i++) l2.push_back(rand()%100); O(l2, "----l2 -----"); l2.push_back(800); li.push_back(900); l2.push_front(550); O(li, "----before li----"); O(l2, "----before l2----"); li.merge(l2, greater<int>()); O(li, "----after li----"); O(l2, "----after l2----"); li.swap(l2); O(li, "-----li-----"); O(l2, "-----l2-----"); cout << "the back() = " << l2.back() << endl; l2.clear(); l2.assign(10, 1); O(l2, "----l2----"); return 0;}
以上代码经过CB GNU GCC编译并通过
- STL学习之list
- STL之list模板
- STL之list学习
- stl之list使用
- STL之List
- STL容器之list
- STL容器之list
- STL之count、list
- sgi stl 之list
- STL之list基础
- STL之list
- C++ STL之list
- stl库之list
- STL容器之list
- STL之list
- STL 之 list
- STL 之 list
- STL 之 list
- mysql表结构导出
- uva10465
- ACM-2
- 游戏服务器之登录
- 嵌入式linux开发——开发环境搭建(NFS共享, 交叉编译)
- STL 之 list
- 探秘腾讯Android手机游戏平台之不安装游戏APK直接启动法(转载)
- 《一步一步写嵌入式操作系统——ARM编程方法与实践》读书笔记(第三章)
- openGl API说明
- 使用模板函数进行遥感图像处理
- VS2012下boost 配置与使用
- sqlplus登录报错TNS-12547: TNS:lost contact
- 输出斐波那契数列的算法
- 应该重新审视的javascript