C++的list的常用方法

参考文献https://www.cnblogs.com/fnlingnzb-learner/p/5889483.html
Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢.

常用函数:
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中重复的元素

一个bug
在下面这段代码中需要注意到的是迭代器iter的定义,list::iterator iter;的方法定义迭代器时,在主函数中能通过编译,但是在函数put_list中定义的迭代器,如果这样用会报如下的错,需要使用前面的typedef list INLIST;INLIST::iterator iter;不知道原因

/home/jlm/桌面/main.cpp:16:7: error: expected primary-expression before ‘int’
  list::iterator iter;

示例代码1–常用

#include 
#include 
#include 

using namespace std;
typedef list INLIST;

//从前向后显示list队列的全部元素
void put_list(list list,string name)
{
	if(list.empty())
	{
		cout<<"list--"< list1;
	//list2对象最初有10个值为6的int元素
	list list2(10,6);
	//list3对象最初有3个值为6的int元素
	list list3(list2.begin(),--list2.end());

	//声明一个名为iter的迭代器
	list::iterator iter;

	//从前向后显示各个list对象的元素
	put_list(list1,"list1");
	put_list(list2,"list2");
	put_list(list3,"list3");

	//向list1序列后面添加两个元素
	list1.push_back(2);
	list1.push_back(4);
	cout<<"list1.push_back(2) and list.push_back(4): "<list3: "<<(list1>list3)<

示例代码二–list的比较

#include 
#include 
#include 

using namespace std;
typedef list INLIST;

//从前向后显示list队列的全部元素
void put_list(list list,string name)
{
	if(list.empty())
	{
		cout<<"list--"< list1(1,9);
	//list2对象最初有3个值为6的int元素
	list list2(3,6);

	cout<<"(list1(1,9)>list2(3,6)): "<<(list1>list2)< list3(3,6);
	//list2对象最初有3个值为6的元素
	list list4(3,6);
	cout<<"(list3(3,6)>list4(3,6)): "<<(list3>list4)< list5(4,6);
	//list6对象最初有3个值为6的元素
	list list6(3,6);
	cout<<"(list5(4,6)>list6(3,6)): "<<(list5>list6)< list7(100,1);
	//list8对象最初有3个值为6的元素
	list list8(3,6);
	cout<<"(list7(100,1)>list8(3,6)): "<<(list7>list8)<
(list1(1,9)>list2(3,6)): 1
(list3(3,6)>list4(3,6)): 0
(list5(4,6)>list6(3,6)): 1
(list7(100,1)>list8(3,6)): 0

从结果中可以分析得到,(list1>list2)的结果是把两个链表一个一个地拿出来比较,比较大小的结果是对应元素类型的比较大小,如果出现了大小结果则返回。

你可能感兴趣的:(C++)