注:博客内容均来自于对《C++标准库》侯捷,华中科技大学出版社一书的笔记。转载请注明出处。
所有例程在Red Hat Linux 3.2.2-5版本上编译运行,g++的版本是 g++ (GCC) 3.2.2 20030222。
1、list
list使用一个双向链表(doubly linked list)来管理元素。
2、list与vector,deque的区别
3、list的操作函数
特别注意的:
list不支持随机存取!!只有使用迭代器才能取得list中的各个元素!而且对于list的迭代器都是双向的!
!!所以涉及到随机存取的算法(所有操作元素顺序的算法,特别是排序算法)都不能使用在list容器上面。
4、list例子
#include <iostream>
#include <list>
#include <algorithm>
#include <iterator>
using namespace std;
void printLists(const list<int>& l1, const list<int>& l2)
{
cout<<"--------------"<<endl;
cout<<"list1: ";
copy(l1.begin(),l1.end(),
ostream_iterator<int>(cout," "));
cout<<endl<<"list2: ";
copy(l2.begin(),l2.end(),
ostream_iterator<int>(cout," "));
cout<<endl<<"--------------"<<endl;
}
int main(int argc, char *argv[])
{
//创建两个list
list<int> list1,list2;
//为list填充数字
for(int i=0; i<6; ++i)
{
list1.push_back(i);
list2.push_back(i);
}
//打印显示list1,list2的信息
printLists(list1,list2);
//查找到数字3,并将list1的值插入到数字3的前面
list2.splice(find(list2.begin(),list2.end(),3)
,list1);
//打印显示list1,list2的信息
printLists(list1,list2);
list2.splice(list2.end(), //目标位置
list2, //源list
list2.begin()); //源位置
//打印显示list1,list2的信息
printLists(list1,list2);
list2.sort();
list1 = list2;
list2.unique();
//打印显示list1,list2的信息
printLists(list1,list2);
list1.merge(list2);
printLists(list1,list2);
return 0;
}
运行结果