| |
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编译并通过