参考文献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
的方法定义迭代器时,在主函数中能通过编译,但是在函数put_list中定义的迭代器,如果这样用会报如下的错,需要使用前面的typedef list
,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)的结果是把两个链表一个一个地拿出来比较,比较大小的结果是对应元素类型的比较大小,如果出现了大小结果则返回。