第九章-顺序容器----重学C++之《 C++ PRIMER》

STL—— 3种顺序容器的基本功能和特性 1.顺序容器的基本功能          STL中的顺序容器包括向量(vector)、双端队列(deque)和列表(list) (1)构造函数 S s(n,t); //构造一个由n个t元素构成的容器实例s。 S s(n); //构造一个有n个元素的容器实例s,每个元素都是T()。 S s(q1,q2);//使用将[q1,q2)区间内的数据作为s的元素构造s。 (2)赋值函数 s. 阅读详情

本章讲解了顺序容器以及他们通用的接口操作。

涉及的容器有:顺序容器vector,list,deque,并提及了stack,queue,priority_queue这三种容器适配器。最常用的容器是vector,支持对元素的快速访问。

主要内容:

1 容器的定义和初始化

2 迭代器的操作。迭代器的元素范围是左闭合区间,即[  )。

3 顺序容器的操作。

插入和删除。

比较.

设置容器大小。

赋值和swap.

4 vector容器的自增长。对于大部分应用,vector容器都是最好的。

因为这种特性使得比起list和deque,vector的增长效率更高。

理论上,vector容器为了实现快速的随机访问,元素以连续的方式存放。当插入新的元素时,由于空间不够可能需要分配新的内存空间(分配新空间,存放原来的和新的元素,撤销旧的空间),这会导致性能很慢。

实际上,为了使容器实现快速的内存分配,实际分配的容量比当前所需的空间多一些。vector容器预留了这些额外的存储区,用于存放新添加的元素。于是不必为新添加的元素重新分配容器。(当每次空间不够时,容器不是只添加了一个元素的空间,而是添加了一大块空间------实际的实现中,常出现增加当前空间的一倍)

5 容器的选用

需要考量的因素:1中间位置插入删除的代价。2元素随机访问的代价。

容器选择的法则:

(1)如果程序随机访问,则选择vector和deque.

(2)如果需要中间位置插入或者删除,使用list。

(3)如果程序在首尾插入或删除,使用deque.

(4)如果读取输入时在中间位置插入元素,然后随机访问。则输入时使用list,然后重排容器使之适合顺序访问,然后复制到vector

 

6 string类型

在某些方面,string可视为字符容器。因此支持大多数vector容器的操作。

初始化

修改元素

字符串替换

字符(串)查找

比较

7容器适配器(理解上也是容器)

容器适配器是让一种已存在的容器类型采用,采用另一种不同的抽象类型的工作方式实现。如stack就可以让任何一种顺序容器以栈的方式工作。简单说来,容器适配器是由容器构造。用以提供另一种工作方式。

stack建立在三种顺序容器之上,queue(队列?)只能建立在list(链表?)之上,priority_queue只能建立在vector和deque上。默认情况,stack建立在deque之上。

 

 

 

 

SAR成像系列:【9】合成孔径雷达(SAR)成像算法-波数域(omega-K)成像算法[也叫距离徙动(RM)算法](附Matlab代码) 合成孔径雷达(SAR)波数域(wK)成像算法也称为距离徙动(RM)算法,它不存在近似条件,可以对整个成像区域基于散射点模型进行精确聚焦。有的文章中称它为SAR成像的最佳实现。 阅读详情

相关推荐

在matlab中运行自带的模块(以CCSDS LDPC Decoder模块为例)

最新版的获取需要注册 MathWorks 账户 访问账户注册页面:www.mathworks.cn/mwaccount/register。下载新版本或历史版本的MATLAB,请登陆:https://www.mathworks.cn/downloads 并下载。点击此处可以拷贝调用例程的命令,在matlab命令行输入即可自动获取代码。可以看到页面中写了该模块需要在R2022b以上版本使用。运行.m文件可以生成simulink运行所需要的数据。可以看到左侧下载到了官方历程的文件。之后双击slx文件即可打开。

qq_28455081的博客 885

C++ STL 容器适配器 栈适配器

http://blog.sina.com.cn/s/blog_9946f55601016qwk.html C++ STL 容器适配器     标准库提供了三种顺序容器适配器:queue、priority_queue、stack.适配器是标准库中通用的概念,包括容器适配器、迭代器适配器和函数适配器。     本质上,适配器是使一事物的行为类似于另一类事物的行为的一种机制。容器适配器让一种已

nkguohao的专栏 2079

Linux下离线安装Google Chrome

目录背景一、下载并安装Google Chrome二、下载并安装依赖包1.libvulkan.so.1()(64bit)2.读入数据总结 背景 项目中服务器被要求不能连接外网,不能直接联网安装,所以需要下载Google Chrome安装包和依赖包,然后离线安装。 linux下步骤都一样,不管ubuntu还是centos只是需要下载对应系统的文件包即可。 本机系统:CentOS 7 一、下载并安装Google Chrome 官方下载地址http://www.google.cn/chrome/browser/d

ancientapesman的博客 1万+

STL:顺序容器

vector、list、stack、queue的操作,以及一些延伸的说明。

上总介的博客 935

SOC设计必看!Tessent DRC检查中最容易踩的5个坑(附解决方案)

本文针对SOC设计中Tessent DRC检查的常见问题,详细分析了5个最易忽视的陷阱,包括时钟域交叉、扫描链虚连、多电压域规则等,并提供专业解决方案。特别针对芯片设计中的DFT验证难点,分享了经过验证的调试方法和Tessent工具使用技巧,帮助工程师提升DRC检查效率。

weixin_29280657的博客 496

MATPOWER下载安装教程

将MATPOWER文件复制在C:\Program Files (x86)\MATLAB\R2016b\bin目录下。原来的窗口中多了很多文件路径,点击【保存】,再点击【关闭】选择所要添加的MATPOWER文件夹,点击【选择文件夹】二、将MATPOWER放在bin目录下。找到菜单栏的【设置路径】点击【添加并包含子文件】一、从官网下载后解压。

weixin_47365903的博客 2万+

C++期末复习

文章为本人复习使用,若有错误,欢迎指正批评

mosun_zgs的博客 946

强化学习入门8—深入理解DDPG

本文是强化学习入门系列的第八篇,前面我们讲Actor-Critic时提到了DDPG。DDPG是google DeepMind团队提出的一种用于输出确定性动作的算法,它解决了Actor-Critic 神经网络每次参数更新前后都存在相关性,导致神经网络只能片面的看待问题这一缺点。同时也解决了DQN不能用于连续性动作的缺点。

小菜羊的博客 4314

STL之顺序容器

容器(container)是容纳、包含一组元素的对象。容器类库中包括7种基本容器:向量(vector)、双端队列(deque)、列表(list)、集合(set)、多重集合(multiset)、映射(map)和多重映射(multimap)。这7种容器可以划分为两种基本类型:顺序容器(sequence container)和关联容器(associative container)。顺序容...

jiaomubai的博客 1144

别再只会用QTcpSocket了!手把手教你用QSslSocket为你的Qt网络应用加上SSL/TLS加密(附完整代码示例)

本文详细介绍了如何将Qt网络应用从QTcpSocket迁移到QSslSocket,实现SSL/TLS加密传输。通过对比API差异、解析核心机制和提供完整代码示例,帮助开发者快速掌握安全网络编程技巧,有效防范数据窃听和中间人攻击等安全风险。

weixin_30654583的博客 400

保姆级教程:在ESXi 8.0上为NVIDIA ConnectX-5/6网卡开启SR-IOV(从BIOS到虚拟机配置)

本文提供在ESXi 8.0上为NVIDIA ConnectX-5/6网卡开启SR-IOV的详细教程,涵盖BIOS设置、固件配置、驱动优化及虚拟机部署。通过SR-IOV技术,显著提升虚拟化环境中的网络性能,适用于高性能计算、AI训练等场景。

weixin_26934905的博客 455

【重学《C++Primer第四版》】第九章第十章、容器(顺序容器和关联容器)

这次深入学了一下C++中的容器,容器分为顺序容器和关联容器。 顺序容器:将单一类型的元素聚集起来成为容器,然后根据位置来存储和访问元素。顺序容器的元素排列次序与元素指无关,而是有元素添加到容器里的次序决定的。顺序容器包括vector(支持快速随机访问),list(支持快速插入/删除),deque(双端队列),顺序容器适配器包括stack,queue,priority_queue。 关联容器:通

职场亮哥 575

2026华为OD机试真题 9月27日 新系统 【均衡调度】

华为OD机试真题 新系统 9月27号【均衡调度】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【均衡调度】多语言题解。

qq_45776114的博客 1759

c++语言中,vector容器与list容器的区别和联系?_百度知道

C++ STL 提供了3个序列容器 :vector, deque, list vector 中的元素是顺序存放的,所以随机访问很快,但是要插入和删除,这个时间复杂度就很高了,vector初始化时有一个capacity,如果元素个数超出capacity,那vector就会重新分配一个新的空间,并把旧值复制到新的空间中,释法原空间,这个也要耗费很多时间,所以如果你知道...

weixin_34179762的博客 204

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

顺序容器概述

什么是顺序容器? 元素在容器中的排列次序只与元素加入容器的次序有关,可以按照顺序访问元素。 顺序容器大致分为两类 按照元素在内存中储存的方式,可以将顺序容器分为连续储存和离散储存两种连续储存的顺序容器 容器在内存中占据一整块连续的内存空间,元素在容器中的排列方式就是在物理内存中的排列方式。 这样的顺序容器有两个特点:可以随机访问元素 在容器中间插入或删除元素,由于要保持元素在内存中的连续

River_Lethe的博客 642

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

STL 笔记(一) 顺序容器 vector、list、deque

vector 可变数组,内存空间是连续的,容量不会进行缩减。支持高效随机存取,即支持[]和at()操作。尾部插入删除效率高,其他位置插删效率较低; list 双向链表,内存空间可不连续,不支持随机存取。插入和删除的效率很高; deque 双端队列,内存空间是多个连续的内存块,在一个映射结构中保存对这些块以及顺序的跟踪,可利用的内存更大,且内存大小是可以自动缩减的。支持随机存取,但是随机存取性能没有vector 好。首尾插入效率高,其他位置插删效率低;

Life runs on code 3846

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C++基础与技巧【顺序容器】 (三大顺序容器~vector, list, deque)

C++基础与技巧【顺序容器】 标准库定义了三种顺序容器类型:vector、list 和 deque(是双端队列“double-ended queue”的简写,发音为“deck”)。它们的差别在于访问元素的方式,以及添加或删除元素相关操作的运行代价。 顺序容器: vector 支持快速随机访问 list 支持快速插入/删除 deque 双端队列 顺序容器适配器: stack 后进先出(

so true_interview / 1103

对C++中3种顺序容器的特性的认识

一:向量 s.capacity(); s.reserve(n); 只要是元素的位置改变了,迭代器、指针和引用就失效了,也就是所指的位置不确定。 二:双端队列 在队头和队尾插入元素,迭代器、指针和引用不失效。 在队头和队尾删除元素,删除元素的迭代器、指针和引用失效,其他的不失效。 在队中插入和删除元素,所有的迭代器、指针和引用都失效。 三:列表 也就是数据结构中的双向链表。 插入

优快云_LYY的专栏 832

派生类可以访问基类的private成员吗

1.从派生类的使用者来讲, 所有的基类方法和成员都是private的,不可访问 2.从派生类内部来讲, 除了基类的private的方法和成员,其他的都可访问

crazyhacking的专栏 7342

c++:strcat潜在的错误不报告

#include #include using namespace std; int main() { char a[]="hello"; char b[]="world"; cout strcat(a,b); cout cout } 运行结果: 5 helloworld 10 这个小程序中数组a的大小被改变了,但是可以正常运行。潜在的错误影响呢

crazyhacking的专栏 1704

《accelerated c++》---------第六章

本章主要讲了算法部分。就是里面的算法。

crazyhacking的专栏 958

函数指针

摘要: 函数指针作用一般有二:1 调用函数  2 作为参数。 需要注意的是typedef这种是定义了 一种函数指针的类型(特定的参数类型和返回值) 代码示例如下, int func1(int x){ return x; } int func2(int x){     cout     return 2; } //函数名做参数,隐式的使用函数指针  int f(int

crazyhacking的专栏 914

<c++ primer>--第五部分 高级主题

一  多重继承与虚继承 1多重继承 派生类的对象包含每个基类的基类子对象。 派生类构造函数的次序按照基类构造函数在派生类类表中的出现顺序。 析构函数的次序是构造函数的逆序。 多个基类可能导致二义性。(含有相同的成员) 解决方法:1指定某个基类。2在派生类中定义这样一个成员。 2虚继承(virtual) 为了避免多次包含同一基类,定义虚继承。 类通过虚继承之处它希望共享其虚基类的状

crazyhacking的专栏 913

《accelerated c++》第九章---设计类

本章简单介绍了类的设计,但是包含了一些好的shejiyuanz

crazyhacking的专栏 902

《面向对象编程》--c++ primer 第15章

一(数据抽象)继承和动态绑定是面向对象编程最重要的两个行为。 只有public和protected成员才能被继承。 (1)protected成员使用规则 1 像proivate成员一样,protected成员不能被类的用户访问(基类可以访问,基类对象不能访问protected成员)。 2 像public成员一样,protected成员可以被类的派生类访问(派生类可以访问protected成

crazyhacking的专栏 838

抛出异常

抛出异常可以给人家提示出信息,人家可以知道哪错了. 是主动的防范。 是这样的吗?

crazyhacking的专栏 832
上一篇: mpich2安装
下一篇: 抛出异常
crazyhacking
博客等级 码龄15年 299粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值