列表容器 list<T> 定义在头文件 < list > 中
列表容器是一个双向链表,其迭代器类型是双向迭代器,只能递增或者递减
sort()
正是由于是双向迭代器,所以标准库的 <algorithm> 的 sort() 函数不实用与列表容器
列表容器自定义了 sort() 函数,有一个参数,参数类型是谓词,默认为 less<T>() ,故默认列表的 sort() 使用“<”以升序排列
构造函数:
列表的声明与矢量和双端队列的声明一致,构造函数也类似
list<T> data( int , T ) 第一参指定元素个数,第二参指定初始元素默认值
list<T> data( iter1 , iter2 ) 使用一个序列来初始化,第二参指向序列最后一个元素的下一位置
list<T> data( int ) 构造含第一参数个数的元素的空列表
size() 返回元素个数(不是最后一个元素下标)
resize() 重设元素个数,删去大于重设个数的,不足则以默认值补全
push_back() 后部插入
push_front() 头部插入
back() 返回尾元素
front() 返回头元素
insert() 多个版本的插入函数,与适量类似
clear() 清空列表元素
erase()
删除指定位置的元素
单迭代器参数版本:删除该迭代器所指位置的元素
双迭代器参数版本:删除该两迭代器所表示的序列
remove() 删除所有的关键字指定的元素
unique() 清除列表中相邻的重复元素
splice()
删除源列表中给定位置的元素,并插入目标列表的某个位置
四参数版本 (目标位置 , 源列表 , 起始 = begin() , 终止 = end())
特别注意: 该函数会删除源列表的被添加入目标位置的元素序列
易错点:当为三个参数时,表示从第三个迭代器参数到末尾的一个序列,而不是仅仅第三个迭代器所指的单个元素
merge()
merge( 源列表 , 谓词 = less<T>() ) 将源列表与目标列表合并,并按谓词方法排序
特别注意: 该函数会删除源列表的所有元素
列表指定位置迭代器的设置:
list<T>::iterator iter ;
for(int i=0 ; i < position ; i++)
++iter;
最终设置 iter 指向 下标为 position 的位置