c++ STL list容器成员函数
list是一个双链表。
|
函数 |
描述 |
|
void l.assign (int n, const val) void l.assign (it first, it last) |
将链表l初始化为n个相同的val元素。 将链表l初始化为从first到last指针所指向的这一段区域内的元素。It指针同l是一个类型的。方便将另一个链表中的某一段连续的元素copy到新链表。 |
|
reference l.back () |
返回最后一个元素。经测试,可以直接l.back()=元素。 |
|
It l.begin() |
返回第1个元素的地址。 |
|
Void l.clear() |
清空链表。 |
|
bool l.empty() |
判断链表中是否有元素,若有,返回true。 |
|
It l.end() |
返回最后一个元素的下一个元素的地址,即此地址没有实际元素。 |
|
it l.erase (it pos);it l.erase (it first, it last); |
删除链表中it指针所指向的元素,返回被删元素的下一个元素地址。 删除从first到last这一段的所有元素,返回最后一个被删元素的下一个元素地址。 |
|
reference l.front () |
返回第一个元素。假如a=l.front(),那么a只是一个备份,对a修改不影响链表。 |
|
get_allocator() |
一直不知道此物何用? |
|
it l.insert (it pos, 元素类型val) void l.insert (it pos, int n,元素类型 val) void l.insert (it pos, it first, it last) |
在pos的前一位置插入val元素,返回该元素的地址。Val元素是不会被修改的,只是拷贝。 在pos的前一位置插入n个val元素。 在pos的前一位置插入first到last之间的一段元素。可以是自己或其他链表中的。 |
|
int l.max_size() |
返回链表可装入的元素数量上限,一般数字很大。经测,数字已包含了链表中存在的元素。 |
|
void l.merge (list& x) void l.merge (list& x, Compare comp) |
将链表x接在l之后,合并为一个链表l,合并完后链表x中的元素为0了,但x仍存在。(不排序) 将两链表合并在一起,按照comp函数的排序规则来排序。 |
|
list& l.operator= (const list& x) |
将整个链表x中所有元素赋给链表l,相当于清空链表l,再将x赋过去。不改变x的数据。注意括号内是参数x。 |
|
void l.pop_back() |
删除链表最后一个元素。 |
|
void l.pop_front() |
删除链表第一个元素。 |
|
void l.push_back (const value_type& val) |
将元素val插入到链表的尾部。 |
|
void l.push_front (const value_type& val) |
将元素val插入到链表的头部。 |
|
it l.rbegin() |
返回“反向链表”的第1个元素的地址。即返回链表的最后一个元素的地址。 |
|
void l.remove (const value_type& val) |
删除值等于val的元素,得一模一样才能删除,估计比对的是整块内存的二进制。与erase不同。 |
|
void l.remove_if (Predicate pred) |
功能:删除元素。将链表中每个元素单独传入pred函数,只要返回的结果为true,就删除。pred不用加括号,它类似于sort里的comp。 |
|
it l.rend() |
返回“反向链表”的最后一个元素的下一个位置,这么说可能不正确,这个函数主要用于反向链表的操作。返回的是地址,该地址没有元素。 |
|
void l.resize (size_type n, value_type val = value_type()) |
重新设置链表的元素个数,若大了,会插入默认元素,若少了,或者删除部分元素。标准是已存元素。 |
|
Void l.reverse() |
将所有元素的顺序置为相反,比如升序变为降序。 |
|
Int l.size() |
返回已存在的元素个数,如果之前刚调用过resize,那size的大小就是resize所设置的。 |
|
Void l.sort(comp) Void l.sort() |
排序,按照comp函数所返回的那样,若true则不改变位置,若false则交换位置。 排序,按照默认的方法排序,一般为增序,比如整数、字符串比较的是ascii码。 |
|
void l.splice (it pos, list& x) void l.splice (it pos, list& x, it i) void l.splice (it pos, list& x, it first, it last) |
将链表x中所有的元素“剪切”到pos处,其实只是指针操作,不用赋值。 将链表x中的元素i“剪切”到pos处,只是单个元素。 将链表x中first到last这段元素都迁移到l中的pos处。 这些操作都会在链表l中增加新元素,并在x中删除相应元素。 |
|
void l.swap (list& x) |
将两个链表互换名字,元素数量可不同,但类型得相同。 |
|
void l.unique() void l.unique (Predicate pred) |
删除重复的多余元素,使每个元素唯一。相同元素的第一个都不会删。 以pred函数为依据,删除重复的元素,当pred返回true时则删除其中一个。 |
|
bool operator== (list<T,Alloc>& lhs,list<T,Alloc>& rhs); bool operator!= ( list<T,Alloc>& lhs, list<T,Alloc>& rhs); bool operator< (list<T,Alloc>& lhs,list<T,Alloc>& rhs); bool operator<= (list<T,Alloc>& lhs, list<T,Alloc>& rhs); bool operator> (list<T,Alloc>& lhs, list<T,Alloc>& rhs); bool operator>= ( list<T,Alloc>& lhs, list<T,Alloc>& rhs); |
一堆不常用的符号。直接比较,比如a==b。 |
|
void swap (list<T,Alloc>& x, list<T,Alloc>& y) |
交换两个链表。与l.swap是一样的效果。 |
c++ STL list容器成员函数的更多相关文章
- c++ STL stack容器成员函数
这是后进先出的栈,成员函数比较简单,因为只能操作栈顶的元素.不提供清除什么的函数. 函数 描述 bool s.empty() 栈是否为空(即size=0).若空,返回true,否则,false. vo ...
- c++ STL map容器成员函数
map容器用于查找,设置键值和元素值,输入键值,就能得到元素值.map对象中的元素时刻都是有序的,除非无序插入的.它是用平衡树创建的.查找很快. 函数 描述,注意有r的地方都是不能用it代替的. ma ...
- c++ STL deque容器成员函数
deque是双向队列,即可以在头部插入删除,也可以在尾部插入删除.内部并不连续,这一点和vector并不一样.可能第1个元素和第2个元素的地址是不连在一起的.在使用时用it迭代器会安全一点. 这是c+ ...
- STL容器 成员函数 时间复杂度表
Sequence containers Associative containers Headers <vector> <deque> <list> <s ...
- c++ stl容器set成员函数介绍及set集合插入,遍历等用法举例
c++ stl集合set介绍 c++ stl集合(Set)是一种包含已排序对象的关联容器.set/multiset会根据待定的排序准则,自动将元素排序.两者不同在于前者不允许元素重复,而后者允许. 1 ...
- STL区间成员函数及区间算法总结
STL区间成员函数及区间算法总结 在这里总结下可替代循环的区间成员函数和区间算法: 相比单元素遍历操作,使用区间成员函数的优势在于: 1)更少的函数调用 2)更少的元素移动 3)更少的内存分配 在区间 ...
- C++STL(vector,map,set,list)成员函数整理
/ *最近ACM比赛,用到的时候忘记成员函数了,贼尴尬,给以后比赛做下准备 */ LIST: 构造函数 list<int> c0; //空链表 list<int> c1(3); ...
- STL进阶--成员函数 vs 算法
容器的成员函数 vs 算法 容器中同名的函数 List: void remove(const T); template<class Comp> void remove_if(Comp); ...
- STL容器能力一览表和各个容器操作函数异常保证
STL容器能力一览表 Vector Deque List Set Multiset map Multimap 典型内部 结构 dynamic array Array of arrays Doubly ...
随机推荐
- myeclipse 不能重新编译 web .classpath文件修改
这个问题困扰我好久了,就是当你从另一个workspace中拷到另一个workspace中,然后在import进myeclipse中就会出现无论你怎么改代码,编译完成后webroot目录下的classe ...
- C#面向对象三大特性之二:继承
面向对象的三大特性之一的封装,解决了将对同一对象所能操作的所有信息放在一起,实现统一对外调用,实现了同一对象的复用,降低了耦合. 但在实际应用中,有好多对象具有相同或者相似的属性,比如有一个对象 果树 ...
- Vue 全家桶单元测试简要指南
此文已由作者张汉锐授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. vue 的单元测试环境 按照目前全家桶的情况,是需要 webpack 的支持的.可以直接使用 vue-cli ...
- vue -- 父子组件间的事件触发
1.父组件触发子组件事件 Parent.vue <child ref="child"></child> <div @click="fn&qu ...
- 飘逸的python - 单例模式乱弹
方法一:装饰器 利用“装饰器只会执行一次”这个特点 def singleton(cls): instances = []# 为什么这里不直接为None,因为内部函数没法访问外部函数的非容器变量 def ...
- 清北刷题冲刺 10-31 p.m
数列 #include<iostream> #include<cstdio> using namespace std; long long a,b,ans; void f(lo ...
- 洛谷P1054 等价表达式
P1054 等价表达式 题目描述 明明进了中学之后,学到了代数表达式.有一天,他碰到一个很麻烦的选择题.这个题目的题干中首先给出了一个代数表达式,然后列出了若干选项,每个选项也是一个代数表达式,题目的 ...
- 洛谷P3092 [USACO13NOV]没有找零No Change
P3092 [USACO13NOV]没有找零No Change 题目描述 Farmer John is at the market to purchase supplies for his farm. ...
- jmeter 正则获取参数集合和ForEach控制器结合使用(转)
怎么把第一个请求获取的返回的多个id,在第二个请求中逐个以单个id作为请求参数来请求? 为了解决这个问题,模拟下该场景 1.请求www.163.com 主页,获取响应中的所有数字,这个获取的数字集合暂 ...
- 如何在html文件中导入header、footer等
1.include是php函数,所以确实需要转化成.php文件--(其实除了用php,html都有自带的引入方法)2.html转化为php文件很简单,直接改一下后缀名就可以了--(如:index.ht ...