STL容器之list

list将元素按顺序储存在链表中. 与向量(vector)相比, 它允许快速的插入和删除,但是随机访问却比较慢.

list提供如下三种构造函数:
list<T> l1;
list<T> l2(l1);
list<T> l3(b, e);b,e是指定范围的两个迭代器

list提供如下的接口函数,具体实现及函数原型请参阅其他帮助文档
assign() 给list赋值
back() 返回最后一个元素
begin() 返回指向第一个元素的迭代器
clear() 删除所有元素
empty() 如果list是空的则返回true
end() 返回末尾的迭代器
erase() 删除一个元素
front() 返回第一个元素
get_allocator() 返回list的配置器
insert() 插入一个元素到list中
max_size() 返回list能容纳的最大元素数量
merge() 合并两个list
pop_back() 删除最后一个元素
pop_front() 删除第一个元素
push_back() 在list的末尾添加一个元素
push_front() 在list的头部添加一个元素
rbegin() 返回指向第一个元素的逆向迭代器
remove() 从list删除元素
remove_if() 按指定条件删除元素
rend() 指向list末尾的逆向迭代器
resize() 改变list的大小
reverse() 把list的元素倒转
size() 返回list中的元素个数
sort() 给list排序
splice() 合并两个list
swap() 交换两个list
unique() 删除list中重复的元素

 

 下面列出一些函数的使用范例,代码如下:

#include <iostream>
#include <list>
#include <string>
using namespace std;

template <typename T>
void show(list<T>& lst)
{
	for(list<string>::iterator it = lst.begin(); it != lst.end(); ++it)
		cout << *it << ' ';
	cout << endl << endl;
}

int main()
{
	list<string> lst1;

	//用assign()函数插入一个字符串
	lst1.assign(1, "Ronnie O'sullivan");
	cout << *lst1.begin() << endl;

	//用pushf_back()函数出入一个元素
	lst1.push_back("John Higgins");
	cout << *++lst1.begin() << endl;

	//用pushf_front()函数出入一个元素
	lst1.push_front("Mark Willimas");
	cout << *lst1.begin() << endl << endl;
	show(lst1);

	//反转list
	lst1.reverse();
	show(lst1);

	//元素个数
	cout << "list size: " << lst1.size() << endl;

	list<string> lst2;
	lst2.push_back("Mark Selby");
	lst2.push_back("Mark Alen");
	
	//return back
	cout << "back: " << lst1.back() << endl;

	//return front
	cout << "front: " << lst1.front() << endl << endl;

	//resize list
	lst1.resize(6);
	cout << "after resize, lst1 size: " << lst1.size() << endl << endl;

	//swap
	cout << "befor swap:" << endl;
	cout << "lst1:" << endl;
	show(lst1);
	cout << "lst2:" << endl;
	show(lst2);
	lst1.swap(lst2);
	cout << "after swap: " << endl;
	cout << "lst1:" << endl;
	show(lst1);
	cout << "lst2:" << endl;
	show(lst2);

	//合并两个list,合并之后是排好序的
	cout << "after merge:" << endl;
	lst1.merge(lst2);
	show(lst1);
	
	//clear list
	lst1.clear();
	cout << "after clear, list size: " << endl;
	cout << lst1.size() << endl;

	return 0;
}


运行结果如下:

运行结果

转载于:https://www.cnblogs.com/rowsy/archive/2012/06/25/2838835.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值