List 用法小结
结构体函数:
无参数的:
list <type> l ; 就是新建一个空的链表
1个参数的:
list <type> l ( n ) ; 就是建立一个有n个元素的链表,这些元素的值都是默认的
list <type>l ( t ) // t是个list<type> ; 就是建立一个和t一模一样的链表
2个参数的:
list <type> l ( n , x ) ; 就是建立一个有n个元素的链表,这些元素的值都初始化为x
int array[]={1,2,3} ; list <type>l ( array , array + 3 ) ; 将另一个list对象的迭代器区间
[ first , last )/*注意右边界是不包括的*/的内容拷贝到新的list对象中
嗯结构体函数大概就这么多
对数据的操作:
l.push_back ( x ) 在链表l的尾部插入type类数据x , l.pop_back()是删除链表尾部的一个元素
l.push_front ( x ) 在链表l的首部插入type类数据x ,l.pop_front()是删除链表首部一个元素
list <type>::iterator iter ; iter = l.begin() ; iter ++ ; l.insert ( iter , x ) /*这里需要注意list里的迭代器不能直接+n,必须得++或--,一个一个挪*/ 插入一个元素x在链表的iter所指的位置之前 对应的删除是l.erase ( iter ) ,将iter所指向的元素删除,实际上那么iter也就没用了,故一般新开一个专门用来删除的迭代器。—— l.erase (iter_first , iter_last ) 将iter_first到iter_last之间的元素(包括iter_first ,不包括 iter_last) 删除
另外还有一个特殊的删除,l.remove( value ) 删除链表中所有值为value的节点
这些函数之外,当然还有这么些东西:
empty ()/*返回是否list为空,为空则真*/
clear () /*将链表清空~*/
sort () /*将链表里的元素排序*/
begin () /*返回指向首位的迭代器*/
end ()/*返回指向末位的迭代器*/
front () /*返回首位值*/
back () /*返回末位值*/
l_1.swap ( l_2 ) /*顾名思义,将l_1和l_2的内容全部调换*/
l.splice ( iter , l_2 ) /*将l_2归并到l的iter指向的元素之前并清空l_2*/
l.splice ( iter , l_2 , iter_2 ) /*把l_2中iter_2所指向的元素归并到l中iter所指向的元素前面并清空l_2*/
merge()没用过。