list容器[通俗易懂]

list容器

大家好,又见面了,我是全栈君。

双向循环链表list

list是双向循环链表,每个元素都知道前面一个元素和后面一个元素。

list和vector的差别:

  1. 在list中,因为其内存分配是非连续的,因此不能像vector那样用[]操作符取值。而仅仅能用迭代器来訪问list中的元素。
  2. list中提供的成员函数与vector类似。只是list提供对表首元素的操作: push_front()、pop_front()。这是vector不具备的。


样例:

int data[6]={3,5,7,9,2,4};  
list<int> lidata(data, data+6);  
lidata.push_back(6);  
...

       list初始化时,申请的空间大小为6。存放下了data中的6个元素,当向lidata插入第7个元素“6”时。list申请新的节点单元,插入到list链表中,数据存放结构例如以下图所看到的:

 

list容器[通俗易懂]

     list每次添加一个元素,不存在又一次申请内存的情况,它的成本是恒定的。

而vector每当添加关键元素的时候,都须要又一次申请新的更大的内存空间,会调用元素的自身的复制构造函数。存在构造成本。在销毁旧内存的时候,会调用析构函数。存在析构成本。所以在存储复杂类型和大量元素的情况下,list比vector更有优势! 

   List是一个双向链表,双链表既能够向前又能够向后链接它的元素。

   List将元素按顺序储存在链表中,与向量(vector)相比, 它同意高速的插入和删除。可是随机訪问却比較慢。

assign() 给list赋值 

back() 返回最后一个元素 

begin() 返回指向第一个元素的迭代器 

clear() 删除全部元素 

empty() 假设list是空的则返回true 

end() 返回末尾的迭代器 

erase() 删除一个元素 

front() 返回第一个元素 

get_allocator() 返回list的配置器 

insert() 插入一个元素到list中 

max_size() 返回list能容纳的最大元素数量 

merge() 合并两个list 

pop_back() 删除最后一个元素 

pop_front() 删除第一个元素 

push_back() 在list的末尾加入一个元素 

push_front() 在list的头部加入一个元素 

rbegin() 返回指向第一个元素的逆向迭代器 

remove() 从list删除元素 

remove_if() 按指定条件删除元素 

rend() 指向list末尾的逆向迭代器 

resize() 改变list的大小 

reverse() 把list的元素倒转 

size() 返回list中的元素个数 

sort() 给list排序 

splice() 合并两个list 

swap() 交换两个list 

unique() 删除list中反复的元素

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116139.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • hive数据类型转换cast_sql数据类型转换convert

    hive数据类型转换cast_sql数据类型转换convert首先看一下类型转换表(来自https://www.iteblog.com/archives/892.html)我们可以用CAST来显式的将一个类型的数据转换成另一个数据类型。如何使用?CAST的语法为cast(valueASTYPE)。举个例子:假如我们一个员工表employees,其中有name、salary等字段;salary是字符串类型的。有如下的查询:SELECTname,sa…

    2022年9月21日
  • 你真的了解python中的换行以及转义吗?「建议收藏」

    你真的了解python中的换行以及转义吗?「建议收藏」python中的分号在python中默认是以换行来标志一行语句的结束。a="xxxx"print(a)#xxxx这段代码很简单,因为a="xxxx&q

    2022年7月6日
  • STS用Maver创建SpringBoot工程

    STS用Maver创建SpringBoot工程

    2021年7月21日
  • UIP协议栈移植到u-boot详解「建议收藏」

    UIP协议栈移植到u-boot详解「建议收藏」UIP协议栈移植到u-boot详解        Author:杨正 date:2014.11.5 Email:y2012ww@gmail.com QQ:12097587561、uip简介      Uip网络是一个简单好用的嵌入式协议栈,易于移植且消耗的内存空间较少,应用于很多嵌入式产品。uIP协议栈去掉了完整的TCP/IP系统中不常用的功能,简化了通讯流程,只保留

    2022年10月20日
  • 逻辑漏洞之密码找回漏洞(semcms)「建议收藏」

    逻辑漏洞之密码找回漏洞(semcms)「建议收藏」目录什么是密码找回漏洞一般流程可能产生该漏洞的情况脑洞图1.用户凭证暴力破解2.返回凭证3.邮箱弱token4.用户凭证有效性5.重新绑定6.服务器验证7.用户身份验证8.找回步骤9.本地验证10.注入11.Token生成12.注册覆盖13.session覆盖演示暴破验证码找回密码更改id号修改admin密码靶场cms下载什么是密码找回漏洞利用漏洞修改他人帐号密码,甚至修改管理员的密码。一般流程1首先尝试正常找回密码流程,选择不同的找回方式,记录所有数据包2分析数据包,找到敏感部分3

    2022年4月30日
  • 关于 time wait

    关于 time waittodo:1,把文件整理一下2,看一下那些问题的处理文章3,仔细看一下这个文章:深入tcp网上有很多关于timewait的问题和修改方案,究竟什么是timewait?作用是什么?会造成什么问题?如何解决?我们接下来一点一点看一下。一,timewait是什么?timewait状态是TCP链接的主动关闭方会有的状态,在发出最后一个ACK包之后,主动关闭…

    2022年6月10日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号