stl list 的使用与原理

常用函数

list<int>  List;  //定义一个空的链表
list<int>  List(count); //建一个含count个默认值是0的元素的链表
list<int>  List(count, info); //建一个含count个默认值是info的元素的链表(info自定义的链表的一个元素)
list<int>  List(List2);   //建一个的copy链表
list<int>  List(List2.begin(),List2.end());   //含区间的元素[First,Last]

assign 分配值
1. L1. assign ( 4,3);                                // L1(3,3,3,3)
2. L1. assign( ++list1.beging(), list2.end());   // L 1(2,3)

front  返回第一个元素的引用
back  返回最后一元素的引用
begin  返回第一个元素的指针(iterator)
end  返回最后一个元素的下一位置的指针
rbegin  返回反向链表的第一个元素(**reverse_iterator** or const)
rend  返回 相当于反向链表的end (reverse_iterator)
push_back 增加一元素到链表尾
push_front  增加一元素到链表头
pop_back  删除链表尾的一个元素
pop_front  删除链表头的一元素
clear  删除所有元素
erase  删除一个元素或一个区域的元素(两个重载)
remove  删除链表中匹配值的元素(匹配元素全部删除)
remove_if  删除条件满足的元素(遍历一次链表),参数为自定义的回调函数
empty  判断是否链表为空
max_size  返回链表最大可能长度
size  返回链表中元素个数
resize  重新定义链表长度(两重载函数)
1. void resize (size_type n);
2. void resize (size_type n, const value_type& val);

reverse  反转链表
sort  对链表排序,默认升序
merge  合并两个有序链表并使之有序
splice  对两个链表进行结合(三个重载函数) 结合后第二个链表清空
 1. mylist1.splice (it, mylist2); //把链表2插入到list1的it位置,插入后list2清空。
 2. mylist2.splice (mylist2.begin(),mylist1, it); //把list it位置的元素 插入到list2的开始,插入后list1中没有it之前指向的元素,it也失效了。
 3. mylist1.splice ( mylist1.begin(), mylist1, it, mylist1.end()); //把从it到end的元素插入到list1的begin位置。

insert  在指定位置插入一个或多个元素(三个重载函数)
1. iterator insert (iterator position, const value_type& val);
2. void insert (iterator position, size_type n, const value_type& val);
3. template <class InputIterator>
    void insert (iterator position, InputIterator first, InputIterator last);

swap  交换两个链表
1. void swap (list& x);
unique  删除相邻重复元素 

猜你喜欢

转载自blog.csdn.net/thalo1204/article/details/80783002