首页 > 编程语言 >C++容器(vector、deque、list、map)

C++容器(vector、deque、list、map)

时间:2023-05-05 21:12:27浏览次数:53  
标签:deque 删除 map 元素 list vector

(1) vector:将元素置于一个动态数组中,可以随机存储元素(也就是用索引直接存取)。

数组尾部添加或删除元素非常迅速。但在中部或头部就比较费时。

*代码演示:*

取:

at在下标越界时会抛出异常,我们能捕获异常进行处理;而[]下标越界会让程序直接终止;


构造函数:

cbegin, cend, crbegin, crend返回的是常量迭代器,不能通过迭代器修改vector元素的值。

插入(insert):值得注意的是,insert函数返回值是一个迭代器,指向新添加的第一个元素:

删除(erase):

删除一段内容时,前闭后开

front函数,返回第一个元素的引用

crbegin(),crend() 倒着输出






(2) deque:“double end queue”的缩写,也就是双端队列。

*deque的实现相比于vector有些复杂,但本质仍然是优化过的动态数组,只不过相比于单纯的动态数组,在前面添加或删除元素非常快了。*

*可以随机存储元素。*头部和尾部添加或删除元素都非常快(略慢与vector)。但在 中间插入元素比较费时(和vector差不多)。

*代码演示:*

可以在前面添加和删除、可以随机存取元素([]、at):

(3) list:本质就是链表,所以自然具有了链表的属性。

*不能随机存取元素(也就是list无法用索引存取元素)*。在任何位置插入和删除元素都比较迅速。(在任何位置插入删除元素的时间相同,在元素头部操作慢于deque,在元素尾部操作慢于deque和vector)

(4) string:


(5) map/multimap:使用“红黑树”实现,是一种高度平衡的二叉树。

内部元素是成对的“key/value”,也就是“键值/实值”,内部元素依据其键值自动排序,map内部相同的键值只能出现一次,multimap则可以出现多次。

*代码演示:*

标签:deque,删除,map,元素,list,vector
From: https://www.cnblogs.com/grasscarp7/p/17375328.html

相关文章

  • Object和Map比较
    Object和Map,Map似Object(都存储键值对集合),但又有区别。适用场景Object:仅做数据存储,属性仅为string、Symbol;需要转为json传输;Map:会频繁更新或删除k-v;存储大量数据且key不知;频繁进行迭代处理Map常用方法,有了Object为啥又有Map。letmm=newMap();mm.set(1,'a');//添加......
  • MASA MinimalAPI源码解析:为什么我们只写了一个app.MapGet,却生成了三个接口
    源码解析:为什么我们只写了一个app.MapGet,却生成了三个接口1.ServiceBase1.AutoMapRoute源码如下:AutoMapRoute自动创建map路由,MinimalAPI会根据service中的方法,创建对应的api接口。比如上文的一个方法:publicasyncTask<WeatherForecast[]>PostWeather(){re......
  • ArcGIS Desktop(ArcMap)创建、发布、调用GP服务全过程示例(等高线分析)
    本文以等高线分析为例,使用ArcMap软件,从GP分析服务的创建、发布、调用全过程进行演示。使用ArcGISPro发布GP服务请跳转:ArcGISPro创建、发布、调用GP服务全过程示例(等高线分析)本文示例使用软件:ArcGISDesktop10.3.1ArcGISJSAPI4.16注:阅读本文前需要对ArcGISGP服务,模型构建......
  • FAST协议解析2 FIX Fast Tutorial翻译【PMap、copy操作符】
    FIXFastTutorialFIXFast教程(译注:本篇是对https://jettekfix.com/education/fix-fast-tutorial/翻译和解释,除了文本的直接翻译外,我还针对各点按我的理解进行了说明和验证,所以可以看到译文下会有很多译注,部分译注还会带有实例。建议看此篇前先看前一篇“FAST协议解析1通过输入......
  • 【SpringBoot】【二】 SpringApplicationRunListeners 监听器执行过程详解
    1 前言我们看到SpringBoot启动的时候,会在每个时机执行监听器,这节我们就来看看,加载监听器的过程我们就不说了哈,上节说过了哈,本节我们主要看:(1)SpringApplicationRunListeners的创建过程(2)监听器的执行时机有哪些(3)监听器的执行过程三个方面来看哈。2 使用在看之前,我们先......
  • nmap使用笔记
    nmap官网常用命令参数及示例命令参数目标明细单:可以传递主机名、IP地址、网络等。例如:scanme.nmap.org,microsoft.com/24,192.168.0.1;10.0-255.0-255.1-254-iL<inputfilename>从文件中输入要扫描的主机-iR<numhosts>选择随机的目标--exclude<host1[,host2][,host3......
  • 通过map+Function优化if else
    需求背景在实际项目中,好比在一个简单的订单处理系统,其中订单有不同的状态(比如新建、已支付、已发货、已收货等),为了实现基于状态机的逻辑处理,我们可以通过switch(状态)去对应不同状态的处理逻辑。1publicStringprocess2(){2switch(status){3c......
  • DevTools failed to load source map: Could not load content for https://xxxxx/boo
    DevToolsfailedtoloadsourcemap:Couldnotloadcontentforhttps://xxxxx/bootstrap-theme.css.map:HTTPerror:statuscode404,net::ERR_HTTP_RESPONSE_CODE_FAILURE这个错误意味着浏览器无法加载指定的CSSsourcemap文件。CSSsourcemap文件通常用于调试前端......
  • obsidian 日记本倒序汇总 获取标题显示 插件dataviewjs list
    obsidian日记本倒序汇总获取标题显示插件dataviewjslist//dataviewjsfunctionremoveDuplicate(arr){returnarr.filter((item,index)=>{returnarr.indexOf(item)===index})}constlist=dv.pages('"02日记本"').file.lists.map(item=>{ retu......
  • MFC-CListCtrl-LVM_GETITEMTEXT获取项信息
     LVITEMlvi;TCHARch[256];lvi.pszText=ch;lvi.cchTextMax=256;lvi.mask=LVIF_TEXT;::SendMessage(hWnd4,LVM_GETITEMTEXT,(WPARAM)0,(LPARAM)&lvi);//获取项信息/*参数3:WPARAM列表视图项的索引参数4:LPARAM指向LVIT......