C++STL学习(3)容器list

注:博客内容均来自于对《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;
}

运行结果





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空空的司马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值