9 c++ 顺序容器

C++ Primer 第九章 9.3 顺序容器的操作 练习和总结 9.3 顺序容器的操作 如题,这一章讲的全是顺序容器如何操作。 9.3.1 向顺序容器中添加元素 顺序容器添加元素的操作如下: 因为array的大小是固定了,所以这些操作是和array无关的。 需要注意的点: 1.如果容器有push_back,push_front这样的函数,表示这个容器在头部或者尾部添加元素时,效率较高。比如vector有push_back,所以在尾部添加元素效率很高,但是如果... 阅读详情

容器类型

// 现代 c++ 应该使用标准库容器而不是内置数组,int a[]为内置数组
vector<string> a; // 可变数组
deque<string> b; // 双端队列,支持头尾插入
list<string> c; // 双向链表,支持双向顺序访问,可以在认可位置插入,插入速度快
forward_list<string> d; // 单向链表,支持单向顺序访问
array<string, 10> e; // 固定大小
string f; // 
stack<string> g; // 栈
queue<string> h; // 队列

容器操作

vector<string> lines;

lines.begin(); // 指向首元素的迭代器
lines.cbegin(); // 指向首元素的const迭代器
lines.end(); // 指向尾元素后一位的迭代器
lines.cend(); // 指向尾元素后一位的const迭代器
lines.rbegin(); // 执行尾元素的反向迭代器
lines.rend(); // 指向首元素前一位的迭代器
lines.crbegin(); // const同理
lines.crend(); // const同理

lines.size(); // 元素数量
lines.max_size(); // 可保存的最大元素数目
lines.empty(); // 是否容器为空(元素数量为0)

vector<string> lines1;
lines.swap(lines1); // 交换lines和lines1的元素

// 比较
if (lines == lines1)
{
}
if (lines != lines1)
{
}
if (lines < lines1)
{
} // 有些容器没有大小比较操作
if (lines > lines1)
{
}

// 添加移除元素,emplace是新标准操作(部分容器类型支持 push_front 等操作)
lines.push_back("ab"); // 添加到元素尾部
lines.emplace_back("cd"); // 添加到元素尾部
// 在lines.end()指向的元素前面插入元素
lines.insert(lines.end(), "g");
lines.insert(lines.end(), {"d", "l"});

// 移除元素
lines.pop_back(); // 移除尾元素
lines.erase(lines.begin()); // 移除lines.begin()指向的元素,返回被删除元素的后一个元素的迭代器
lines.erase(lines.begin(), lines.end()); // 移除范围,返回被删除范围的后一个元素的迭代器,这里返回lines的尾后元素

// 改变容器大小
lines.resize(20, "a"); // 将容器大小变为20,如果变大,则多出的部分赋值 "a"

lines.front(); // 首元素引用
lines.back(); // 尾元素引用
lines[0]; // 第一个元素

迭代器

vector<string> lines{"ab", "cd", "ef"};

auto begin = lines.begin();
while (begin != lines.end())
{
begin++;
cout << *begin << endl;
}

初始化操作

vector<string> lines{"ab", "cd", "ef"};
vector<string> a(lines); // 拷贝操作
vector<string> b = lines; // 赋值操作

// // 错误,vector<string>无法隐式转换为vector<char*>
// vector<char*> c(lines);
vector<char*> c {"ab", "cd"};
vector<string> d(c.begin(), c.end());

vector<string> e(10, "ab"); // 10个元素赋予默认值ab

// 将 assign2 的元素变为 assign1.begin() - assign1.end()的范围
vector<string> assign1{"ab", "cd"};
vector<string> assign2{"a", "b", "c"};
assign2.assign(assign1.begin(), assign1.end()); // assign2 为 "ab", "cd"

// 交换 swap1 和 swap2 的元素
vector<string> swap1{"ab", "cd"};
vector<string> swap2{"a", "b", "c"};
swap(swap1, swap2);

array<string, 2> f{"ab", "cd"}; // array具有固定大小
array<string, 2> g = f; // 对内置类型无法赋值与拷贝,但array可以
for (auto s : g)
{
	cout << s << endl;
}

字符串操作

string line("abcdef");

auto s1 = line.substr(0, 2); // s1为 ab
line.insert(line.size(), "g"); // 在line.size()位置插入
line.find("ab"); // 返回 0,如果找不到,则返回 string::npos
line.rfind("ab"); // 找出最后匹配的位置
to_string(1); // 转字符串
// 字符串传数字
stoi("1");
stol("1");
stoll("1");
stof("1");
stod("1");
C++ Primer 第九章 9.1 顺序容器概述练习和总结 9.1 容器概述 容器用来存储特定类型的对象,容器分为顺序容器和关联容器, 顺序容器提供了元素存储和访问顺序的能力,这种顺序不依赖于存储对象的值。 关联容器的访问顺序 由关键词的顺序决定。 标准库中的顺序容器有以下几种。 他们所提供的功能不同,在访问元素的速度、存储开销、插入和删除上的性能消耗上各有不同。 其中forward_list和array是C++新标准增加的标准库容器,他们两个的性能基本... 阅读详情

相关推荐

ESP32+micro-ROS机器人开发实战:轻量级ROS2嵌入式集成

ROS2是现代机器人软件栈的核心框架,其基于DDS的分布式通信与QoS保障能力为多节点协同提供基础支撑;而micro-ROS作为专为微控制器优化的ROS2兼容中间件,解决了资源受限设备(如ESP32)接入ROS2生态的关键难题。其通过分层架构将DDS通信下沉至上位机Agent,使MCU仅需运行轻量Client,大幅降低内存开销(实测<180KB)并保留标准ROS2接口语义。该方案广泛应用于教育机器人、移动底盘、传感器节点等嵌入式场景,尤其适合基于ESP-IDF开发的Wi-Fi/BLE物联网机器人系统。本文以

weixin_29025501的博客 400

[C++]C++中的顺序容器

C++中的顺序容器 概述 一个容器就是一些特定类型对象的集合。顺序容器提供了控制元素存储和访问顺序的能力。 顺序容器类型 vector:可变大小数组,支持快速随机访问 deque:双端队列,支持快速随机访问 list:双向链表,只支持双向顺序访问 forward_list:单向链表,只支持单向顺序访问 array:固定大小数组 string:与...

weixin_30367873的博客 211

mobaXterm连接vmWare虚拟机上的centOS7提示连接失败的解决方法

1.问题描述: mobaXterm安装后连接虚拟机vmWare上的centOS7发现连接不上,如下图所示: 2.解决方法 先是查了一下centOS的ip 开始错误的以为 virbr0: 后面的inet就是虚拟机的IP 实则不然(正确的ip是在ens33后面的inet中的ip,大佬们勿喷) 这个值需要配置一下的,具体配置过程如下: step1: 进入centOS下的/...

hss19214的博客 7890

C++ Primer 第九章 顺序容器 1

9.9 begin 和 cbegin 两个函数有什么不同? 答:(1) cbegin() 是C++新标准引入的,用以支持auto与begin()和end()函数使用的。它返回的是容器第一个元素的const迭代器,只能够以只读形式访问容器元素,不能够通过它修改元素内容。当不需要写访问时,应该使用cbegin(). (2)begin()是被重载过的,也就是说实际上是有两个begin成员,一个是...

ruotianxia的博客 607

555时基芯片的5种经典电路设计:从方波发生器到PWM调光实战

本文深入解析了555时基芯片的5种经典电路设计,从基础的无稳态方波发生器、单稳态触发器,到实用的占空比可调PWM信号源,并重点介绍了如何引入TVS保护电路增强系统鲁棒性。最后通过一个带保护的PWM LED调光台灯实战项目,综合展示了信号生成、功率驱动与电路保护的核心技术,是电子爱好者掌握模拟电路设计与应用的绝佳指南。

weixin_29207439的博客 491

PADS VX2.7学习记录05-PADS Layout设计文件Gerber等输出整理

在“PDF Document”栏中,依次选中除REF-TOP和REF-BOT之外的文件,单击图标,将其余PDF Document文件进行删除,如图所示。然后单击【生成PDF】按钮,即可创建一份PDF格式的位号图。

tianpu2320959696的博客 1025

顺序容器和迭代器

一、顺序容器vector 1.1容器是什么 在C++中,容器被定义为:在数据存储上,有一种对象类型,它可以持有其他对象或指向其他对象的指针,这种对象类型就叫做容器。简单理解,即容器就是保存其他对象的对象。而且,这种“对象”还有处理“其他对象”的方法。 容器是随着面向对象语言的诞生而提出的,它甚至被认为是早期面向对象语言的基础。现在几乎所有面向对象语言中都伴随着一个容器,C++中则是标准模版库(STL)。 C++采用基于模版的方式处理容器,STL中的容器提供了多...

yangyaokun0220的博客 409

Logstash安装部署

1. 部署及安装所用的用户不能是root。

lmj3732018的博客 4294

C++顺序容器vector、deque、list

https://www.yuanmas.com/info/2gOwM6JabA.html

qq_41624560的博客 161

学Simulink——基于风力发电系统的建模与仿真场景:基于自适应控制的风力发电系统输出功率调节

本文详细介绍了使用Simulink搭建风力发电系统自适应控制模型的完整流程。首先阐述了风速波动对电网的影响及自适应控制的优势,然后逐步指导创建Simulink项目、搭建系统结构(包括风速源、风轮机、发电机等模块),重点讲解了模型参考自适应控制器(MRAC)的设计步骤和参数设置方法。通过仿真分析验证了系统在风速变化时仍能保持输出功率稳定,展示了自适应控制的响应速度和鲁棒性。最后提出了引入深度学习预测、多变量控制等优化方向,为新能源领域工程师提供了实用的建模与仿真指导。

amy_mhd的博客 220

【Win10/11】Windows电脑WiFi显示小地球/断网的解决方法 Windows WiFi小地球、网络连接中断、网络重置、无线网卡驱动、Win10/Win11网络修复

最近经常有粉丝留言问我,Windows 电脑突然连不上 WiFi,右下角网络图标显示成了“小地球 🌐”,或者干脆提示“未连接 - 没有可用的连接”。明明其他设备网络都正常,唯独自己的电脑断了。作为在互联网大厂混迹多年的前端程序员,我自己也碰到过这个问题。总结几种比较常见、亲测有效的解决方法,写出来供大家参考,希望能帮你快速恢复上网!问题原因推荐解决方法系统设置错乱使用网络重置功能驱动异常或冲突卸载后重启自动安装驱动驱动版本过旧手动更新网卡驱动实在不行考虑使用系统还原点或重装系统这几个方法中,

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 3850

COMSOL有限元仿真深度指南:为结构件添加预应变

一、什么是预应力和预应变? 我们知道,结构力学问题中,结构件在外载荷作用下产生变形响应以吸收外载荷做功带来的能量;而在结构内部,整体的受力和变形则是通过固体微元的应力与应变传递的。 对于线弹性材料来说,应力与应变的关系可以线性表达,也即 σ=Dεσ = Dεσ=Dε ;在该式中,无论固体微元的应变程度多大,弹性矩阵DDD都是一个不变的常值。而对于超弹性材料来说,应力与应变的关系则需要通过应变能密度函数WWW来表征(详细参加博客《COMSOL有限元仿真深度指南:超弹性模型有限元分析入门》)。 从上面我们也不难

忘了面孔的Batou 7170

C++ primer 第9章顺序容器 思维导图

957

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【经典书籍】C++ Primer 第9章顺序容器精华讲解

顺序容器(Sequential Containers)是一种用来存储一组对象的容器,这些对象在容器中按照它们被添加进去的顺序进行存储,也就是说,元素的逻辑顺序与它们在容器中的物理顺序是一致的。顺序容器不提供基于键(key)的快速查找(那是关联容器的功能,比如map和set),而是更关注元素之间的顺序关系和高效的插入/删除操作。容器头文件特点简述vector<vector>动态数组,支持快速随机访问,尾部插入/删除高效,中间或头部插入/删除相对低效deque<deque>

chenningpocom的博客 1319

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

《c++primer》 第9章:顺序容器

/ 函数演示顺序容器的基本使用// 无参数// vector 是动态数组,支持随机访问,尾部插入删除快// 在 vector 尾部插入元素 1// 在 vector 尾部插入元素 2// 遍历输出 vector 中的元素// list 是双向链表,不支持随机访问,任意位置插入删除快// 在 list 尾部插入元素 3// 在 list 头部插入元素 4// 遍历输出 list 中的元素// deque 是双端队列,支持随机访问,头尾插入删除快。

qq_40844444的博客 226

【c++ primer 笔记】第9章 顺序容器

顺序容器为程序员提供了控制元素存储和访问顺序的能力。这种顺序不依赖于元素的值,而是与元素加入容器时的位置相对应。顺序容器都提供了快速顺序访问元素的能力。所有容器都提供高效的动态内存管理顺序容器类型容器类型介绍vector可变大小数组。支持快速随机访问。在尾部插入/删除速度快。deque双端队列。支持快速随机访问。在头尾位置插入/删除速度很快。list双向链表。只支持双向顺序访问。在list中任何位置进行插入/删除操作速度都很快。单向链表。只支持单向顺序访问。array固定大小数组。string。...

小呆鸟blog 1223

C++ primer 第9章 顺序容器

文章目录顺序容器类型确定使用哪种顺序容器容器库概览容器操作迭代器迭代器支持的所有操作迭代器支持的所有运算迭代器范围对构成范围的迭代器的要求标准库迭代器范围左闭右开的三种性质容器定义和初始化将一个新容器创建为另一个容器的拷贝将array拷贝到vector中的代码与顺序容器大小相关的构造函数标准库array具有固定大小赋值和swap测试swap的代码关系运算符顺序容器的特有操作向顺序容器添加元素容器元...

weixin_43116900的博客 799

第9章 顺序容器【C++】

第9章 顺序容器 顺序容器为开发者提供了控制元素存储和访问顺序的能力,顺序不依赖元素的值,而是元素加入元素容器时的位置相对应 顺序容器概述 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y2e3fN9h-1653549026113)(./img/屏幕截图%202022-05-26%20114318.jpg)] 如list、forward_list是链式存储结构,而vector、deque、array、string为顺序存储结构,在增删改等操作上它们会有不同的特性 构造函数 默

高万禄的博客 642

c++语法9 顺序容器

顺序容器的类型 vector(支持快速随机访问) list(支持快速插入/删除) deque(支持快速随机访问,双端队列) 顺序容器适配器 stack queue priority_quene 容器元素的初始化 1.将一个容器初始化为另一个容器的副本 2.初始化为一段元素的副本(迭代器) 3.分配和初始化指定数目的元素 容器内元素的类型约束 支持复制和赋值功能是容器元素类型的最低要求 容...

翰轩阳的博客 223

【C++】【C++ Primer】9-顺序容器

【C++】【C++ Primer】9-顺序容器1 顺序容器概述 1 顺序容器概述 容器就是特定类型对象的集合。

慕容陌尘的博客 459

【C++ Primer】第9章:顺序容器

第9章 顺序容器 顺序容器为程序员提供了控制元素存储和访问顺序的能力。这种顺序不依赖于元素的值,而是与元素加入容器时的未知相对应。 9.1 顺序容器概述 一个容器就是一些特定类型对象的集合 forward_list和array是新C++标准增加的类型 与内置数组类似,array对象的大小是固定的,array不支持添加和删除元素以及改变容器大小的操作 forward_list没有size操作 9.2 容器库概述 特定类型数据注意初始值 //假定noDefault是一个没有默认构造函数的类型 vector&l

zdb 1276

c++primer 第9章 顺序容器

c++primer 第9章 顺序容器

m0_68312479的博客 828

C++ Primer 第9章顺序容器

有些类没有提供默认构造函数,我们可以定义一个这种类型对象的容器,但我们在构造这种容器时不能只传递给它一个数目参数.将一个新容器创建为另外一个容器的拷贝的方法有两种:可以直接拷贝整个容器(除array)拷贝有一个迭代器对指定的范围。

yang_pi_pi的博客 406

C++Primer 第9章 顺序容器

写在前面 到了,看来侯捷老师的STL,我对C++的标准库是有了极大的兴趣的,本章主要讲述的是标准库中的顺序容器的使用。 顺序容器 首先什么是顺序容器呢?是将数据以一定次序存储在内存当中,其数据的顺序不以元素的值确定先后。 那么顺序容器都有什么呢:本书给出了以下6种容器: vector 支持快速随机访问,可变大小,头部插入删除可能很慢 deque 双向队列,头尾均可快速的插入,随机访问,可变大小 list 双向链表,只能顺序访问,但插入删除很快,对于多量的小元素,更耗内存 forward_list 单

qq_40084959的博客 177

C++ primer | 第9章 顺序容器

容器就是一些特定类型对象的集合,顺序容器(sequential container)的顺序与元素加入容器时的位置对应。 9.1 概述 sequential容器的类型: 1. vector 连续内存 2. deque 双端队列 3. list 快速添加,不能随机访问 4. forward_list 5. array 不能添加和删除 6. string 连续内存 选容器的基本原则

bea_tree的博客 624
上一篇: 8 c++ 流
下一篇: 10 c++ 泛型算法
dabusidede
博客等级 码龄9年 84粉丝 208原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值