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容器成员函数的更多相关文章

  1. c++ STL stack容器成员函数

    这是后进先出的栈,成员函数比较简单,因为只能操作栈顶的元素.不提供清除什么的函数. 函数 描述 bool s.empty() 栈是否为空(即size=0).若空,返回true,否则,false. vo ...

  2. c++ STL map容器成员函数

    map容器用于查找,设置键值和元素值,输入键值,就能得到元素值.map对象中的元素时刻都是有序的,除非无序插入的.它是用平衡树创建的.查找很快. 函数 描述,注意有r的地方都是不能用it代替的. ma ...

  3. c++ STL deque容器成员函数

    deque是双向队列,即可以在头部插入删除,也可以在尾部插入删除.内部并不连续,这一点和vector并不一样.可能第1个元素和第2个元素的地址是不连在一起的.在使用时用it迭代器会安全一点. 这是c+ ...

  4. STL容器 成员函数 时间复杂度表

    Sequence containers Associative containers   Headers <vector> <deque> <list> <s ...

  5. c++ stl容器set成员函数介绍及set集合插入,遍历等用法举例

    c++ stl集合set介绍 c++ stl集合(Set)是一种包含已排序对象的关联容器.set/multiset会根据待定的排序准则,自动将元素排序.两者不同在于前者不允许元素重复,而后者允许. 1 ...

  6. STL区间成员函数及区间算法总结

    STL区间成员函数及区间算法总结 在这里总结下可替代循环的区间成员函数和区间算法: 相比单元素遍历操作,使用区间成员函数的优势在于: 1)更少的函数调用 2)更少的元素移动 3)更少的内存分配 在区间 ...

  7. C++STL(vector,map,set,list)成员函数整理

    / *最近ACM比赛,用到的时候忘记成员函数了,贼尴尬,给以后比赛做下准备 */ LIST: 构造函数 list<int> c0; //空链表 list<int> c1(3); ...

  8. STL进阶--成员函数 vs 算法

    容器的成员函数 vs 算法 容器中同名的函数 List: void remove(const T); template<class Comp> void remove_if(Comp); ...

  9. STL容器能力一览表和各个容器操作函数异常保证

    STL容器能力一览表 Vector Deque List Set Multiset map Multimap 典型内部 结构 dynamic array Array of arrays Doubly ...

随机推荐

  1. 【leetcode 239. 滑动窗口最大值】解题报告

    思路:滑动窗口的思想,只要是求连续子序列或者子串问题,都可用滑动窗口的思想 方法一: vector<int> maxSlidingWindow(vector<int>& ...

  2. JSP自学笔记

    基础语法 1.对比 JSP:java平台安全性高,适合开发大型的.企业级的web应用程序: ASP.net:.NET平台简单易学,安全性和跨平台性差: PHP:简单高效,成本低,开发周期短,适合中小型 ...

  3. uoj #185. 【ZJOI2016】小星星

    #185. [ZJOI2016]小星星 小Y是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有 nn 颗小星星,用 mm 条彩色的细线串了起来,每条细线连着两颗小星星.有一天她发现,她的饰品被破坏 ...

  4. 洛谷P1038 神经网络

    P1038 神经网络 题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应用.对神 ...

  5. jpanel使用布局管理器时,setsize会失效

    布局管理器会自动根据容器里面的控件大小自动调整size和位置 如果想设置容器的大小和位置,可以使用setPreferredSize方法.

  6. Hadoop中解除 "Name node is in safe mode"的方法

    运行hadoop程序时,有时候会报以下错误,说明Hadoop的NameNode处在安全模式下. 原因分析: 在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文 ...

  7. 帝都Day7——解放篇

    昨天晚上的problems: songfen 坠大子段和,要把[l,r]其中一个数变成P,我们要把最小的数变成p. 当L,R没有取满整个区间,P可以在[L,R]外面!!!!!!!这种情况真是令人绝望. ...

  8. d190305面试题01总结

    题目一: 题目二: 题目三: 类中的某个成员变量可以被他和他的子类访问,应该用protected 知识点: 1.类中public修饰的属性,方法可以被该类,子孙类和外部类访问. 2.类中protect ...

  9. 事务隔离实现并发控制:MySQL系列之十

    一.并发访问控制 实现的并发访问的控制技术是基于锁: 锁分为表级锁和行级锁,MyISAM存储引擎不支持行级锁:InnoDB支持表级锁和行级锁: 锁的分类有读锁和写锁,读锁也被称为共享锁,加读锁的时候其 ...

  10. STP-19-Port-Channel发现和配置

    工程师在给一台交换机上的特定Port-Channel增加多个端口时,有一些配置参数必须相同,如下所示:   使用相同的速率和双工设置: 使用相同的操作模式(Trunk.Access.动态): 若不为T ...