【语法】C++的list
目录
为什么会有list?
迭代器失效:
list和vector的迭代器不同的地方:
list的大部分用法和vector都很像,例如push_back,构造,析构,赋值重载这些就不再废话了,本篇主要讲的是和vector不同的点
构造、拷贝构造:
析构:
赋值重载:
尾插:
为什么会有list?
vector就可以存储多个数据了,为什么还要有一个list呢?相信这是很多初学者的问题之一,下面就给大家说清楚
vector缺点:
- 头部和中部的插入删除效率低(O(N)),因为需要挪动数据
- 插入数据空间不够需要增容,增容需要开新空间、拷贝数据、释放旧空间,会付出很大的代价
vector优点:
支持下标的随机访问,间接的就很好的支持排序、二分查找、堆算法等等
通过上面可知,vector因为支持下标的随机访问(即空间是连续的),那么再增删查改就会牺牲效率
为了解决这个痛点,就有了list
vector插入数据需要先将后面的数据往后移,如图所示
而list只需要再开辟一个新节点,并将其左右连接起来就进可以,如图所示
但虽然list解决了vector的痛点,也同时失去了vector的优点,即随机访问
list缺点:
不支持随机访问
list优点:
- list头部、中部插入数据不再需要挪动数据,效率高(O(1))
- list插入数据是新增节点,不需要增容
所以在实际使用中vector和list是相辅相成的两个容器
和string,vector一样,list也有迭代器,用法也一样,但string和vector在遍历数据时有三种方法,分别是[]+for、迭代器、范围for,但list中没有[]+for这个方法了,因为[]重载的前提是容器本身支持随机访问,而list不支持随机访问,自然没有[]重载
迭代器遍历:
list<int> lt;
lt.push_back(2);
lt.push_back(3);
lt.push_back(4);
lt.push_back(5);
lt.push_front(1);//list中不仅支持尾插和尾删,还支持头插和头删list<int>::iterator it = lt.begin();
while (it != lt.end())
{cout << *it << " ";it++;
}
(list中不仅支持vector已有的尾插和尾删,还支持头插和头删)
范围for遍历:(只要支持迭代器,就支持范围for)
list<int> lt;
lt.push_back(1);
lt.push_back(2);
lt.push_back(3);
lt.push_back(4);
lt.push_back(5);for(auto e : lt)
{cout << e << " ";
}
从支持的操作接口的角度分迭代器的类型:单向(forword_list)、双向(list)、随机(vector)
迭代器失效:
那下面的代码是否可以运行呢?
int main()
{list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_back(5);list<int>::iterator it = lt.begin();while(it != lt.end()){if(*it % 2 == 0)lt.erase(it);it++;}return 0;
}
这段程序的目的是删除链表中的偶数,但如果运行的话会报错
原因和vector的迭代器失效类似,但上述代码list迭代器失效主要是因为都删除了这个节点了,那现在这个迭代器里指向的是一个被释放的空间,那当然不行
改也和vector的改法一样
int main()
{list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_back(5);list<int>::iterator it = lt.begin();while (it != lt.end()){if (*it % 2 == 0)it = lt.erase(it);elseit++;//把it++放在else里是因为如果执行了erase,它的返回值就是删除的元素的下一个元素的迭代器}return 0;
}
那这段代码会发生迭代器失效吗?
int main()
{list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_back(5);list<int>::iterator it = lt.begin();while (it != lt.end()){if (*it % 2 == 0)lt.insert(it, 114);it++;}return 0;
}
答案是不会
怎么insert又不会迭代器失效了?
在vector中,insert会迭代器失效是因为原本指向这个数据的迭代器在插入数据后不是指向那个数了
而在list中,插入数据并不会改变迭代器的指向,insert后迭代器还是指向原来的数据
所以在list中,insert不会迭代器失效,erase会迭代器失效
那在vector中,插入使得扩容也会迭代器失效,list会吗?
关于capacity的接口就只有这3个,可以看到,只有size,没有capacity,因为list不存在扩容的问题,每次插入数据都会新开辟一块空间,所以list不需要扩容,自然也不会因为扩容而迭代器失效
注:迭代器失效了没什么事,是去访问失效的迭代器就会出现问题
list还支持调出头尾数据(vector也支持)
list<int> lt;
lt.push_back(2);
lt.push_back(3);
lt.push_back(4);
lt.push_back(5);
lt.push_front(1);//list中不仅支持尾插和尾删,还支持头插和头删
cout << lt.front() << endl;
cout << lt.back() << endl;
输出结果:
list还支持翻转接口
void print(const list<int>& lt)
{for (const auto& e : lt)cout << e << " ";
}int main()
{list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_back(5);lt.reverse();print(lt);return 0;
}
输出结果:
list还支持排序,是的你没看错,连vector都没有内置的sort函数,list竟然有(不过效率很低,不常用)
void print(const list<int>& lt)
{for (const auto& e : lt)cout << e << " ";
}int main()
{list<int> lt;lt.push_back(4);lt.push_back(2);lt.push_back(7);lt.push_back(1);lt.push_back(4);lt.sort();print(lt);return 0;
}
输出结果:
list和vector的迭代器不同的地方:
如果想在第三个位置的前方加入一个数据
void print(const list<int>& lt)
{for (const auto& e : lt)cout << e << " ";
}int main()
{list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_back(5);lt.insert(lt.begin() + 2, 114);print(lt);return 0;
}
这样写可以吗?
如果是在vector的话,没问题,但list就会报错
vector支持随机访问,所以begin() + 2这种操作就是往后移两位。
但list不支持随机访问,begin() + 2 就加到未知的空间去了所以会报错
正确写法是这样
void print(const list<int>& lt)
{for (const auto& e : lt)cout << e << " ";
}int main()
{list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_back(5);list<int>::iterator it = find(lt.begin(), lt.end(), 3);lt.insert(it, 114);print(lt);return 0;
}
需要用到全局的算法接口find,找到begin()到end()范围(左闭右开区间)内第一个值是3的地方(从左往右走),返回值就是这个地方的迭代器
list还支持转移
它支持将链表的全部或者某一个区域的数据转移到另一个链表中
void print(const list<int>& lt)
{for (const auto& e : lt)cout << e << " ";cout << endl;
}int main()
{list<int> lt1;lt1.push_back(1);lt1.push_back(2);lt1.push_back(3);lt1.push_back(4);lt1.push_back(5);list<int> lt2;lt2.push_back(114);lt2.push_back(514);lt2.push_back(191);lt1.splice(lt1.begin(), lt2);//将lt2的数据全部移动到lt1开始的位置print(lt1);print(lt2);//此时lt2就是空了因为都被移走了return 0;
}
输出结果:
第二行为空是因为lt2的数据都转移到lt1了
remove接口也是删除一个数(用得不多)
void print(const list<int>& lt)
{for (const auto& e : lt)cout << e << " ";cout << endl;
}int main()
{list<int> lt1;lt1.push_back(1);lt1.push_back(2);lt1.push_back(3);lt1.push_back(4);lt1.push_back(5);lt1.remove(2);//从左往右开始找值为2的数据并删掉print(lt1);return 0;
}
但它是找AND删,而erase是删除指定的迭代器的位置
相关文章:
【语法】C++的list
目录 为什么会有list? 迭代器失效: list和vector的迭代器不同的地方: list的大部分用法和vector都很像,例如push_back,构造,析构,赋值重载这些就不再废话了,本篇主要讲的是和vecto…...
Java接口性能优化面试问题集锦:高频考点与深度解析
1. 如何定位接口性能瓶颈?常用哪些工具? 考察点:性能分析工具的使用与问题定位能力。 核心答案: 工具:Arthas(在线诊断)、JProfiler(内存与CPU分析)、VisualVM、Prometh…...
基于STM32与应变片的协作机械臂力反馈控制系统设计与实现---5.2 工业机械臂系统性能测试全方案(专业工程级)
5.2 工业机械臂系统性能测试全方案(专业工程级) 一、测试体系架构设计 1.1 三级测试体系 #mermaid-svg-A55VxjZ7ENKNWAli {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-A55VxjZ7ENKNWAli .error-icon{fill:#55…...
VM——相机拍照失败
1、问题:相机频闪触发,在MVS中正常出图,在VM中出现拍照失败 2、解决: 1、首先排查网络设置(巨帧是否设置) 2、电脑的所有防火墙是否关闭 3、在MVS中恢复相机的设置参数为默认参数,删除VM中的全…...
图解力扣回溯及剪枝问题的模板应用
文章目录 选哪个的问题17. 电话号码的字母组合题目描述解题代码图解复杂度 选不选的问题78. 子集题目描述解题代码图解复杂度 两相转化77. 组合题目描述解题代码法一:按选哪个的思路法二:按选不选的思路 图解选哪个:选不选 复杂度 选哪个的问…...
Trae + LangGPT 生成结构化 Prompt
Trae LangGPT 生成结构化 Prompt 0. 引言1. 安装 Trae2. 克隆 LangGPT3. Trae 和 LangGPT 联动4. 集成到 Dify 中 0. 引言 Github 上 LangGPT 这个项目,主要向我们介绍了写结构化Prompt的一些方法和示例,我们怎么直接使用这个项目,辅助我们…...
模糊测试究竟在干什么
目录 1.软件漏洞和缺陷 2.模糊测试与传统测试 3.汽车领域中的模糊测试 4.常见工具总结 1.软件漏洞和缺陷 提单、上票、拒收,这是开发和测试的日常博弈。大多数时候,我们是根据自己对需求的理解来进行开发和测试,这基本是属于功能层级。 …...
【RTD200P04 MCAL 篇3】 S32M244 PWM PDB ADC控制
【RTD200P04 MCAL 篇3】 S32M244 PWM PDB ADC控制 一,文档简介二,PWMTRGMUXPDBADC 2ch 软件配置与实现2.1 软硬件版本平台2.2 MCAL工程以及模块配置2.2.1 Dio 模块配置2.2.2 Adc模块配置2.2.3 Mcu模块配置2.2.4 Platform模块配置2.2.5 Port模块配置2.2.6…...
03--Deepseek服务器部署与cjson解析
一、ollama部署deepseek模型 1、Ollama 是一个开源的本地大语言模型运行框架,专为在本地机器上便捷部署和运行大型语言模型(LLM)而设计。 Ollama 教程:从 0 到 1 全面指南 教程【全文两万字保姆级详细讲解】 -CSDN博客 1.下载o…...
实现抗隐私泄漏的AI人工智能推理
目录 什么是私人AI? 什么是可信执行环境? TEE 如何在 AI 推理期间保护数据? 使用 TEE 是否存在风险? 有哪些风险? Atoma 如何应对这些风险 为什么去中心化网络是解决方案 人工智能推理过程中还有其他保护隐私的方法吗? 私人人工智能可以实现什么? 隐私驱动的应…...
Kotlin 学习--数组
一、关于数组的基础知识和常用方式 /*** kotlin 数组* 使用arrayOf创建数组,必须指定数组的元素,可以是任意类型* */val arrayNumber arrayOf(1, 2, 3, 4)/*** 集合中的元素可以是任意类型* kotlin 中的Any 等价于 java 中的Object 对象的意思* */val a…...
Spring Boot 启动后自动执行 Service 方法终极指南
**导语:**在 Spring Boot 开发中,我们经常需要在应用启动后立即执行初始化任务(如加载配置、预热缓存、启动定时任务)。本文将深度解析 5 种主流实现方案,包含完整代码示例、执行顺序控制技巧和避坑指南&a…...
STM32 HAL库之GPIO示例代码
LED灯不断闪烁 GPIO初始化,main文件中的 MX_GPIO_Init(); 也就是在 gpio.c文件中 void MX_GPIO_Init(void) {GPIO_InitTypeDef GPIO_InitStruct {0};/* GPIO Ports Clock Enable */__HAL_RCC_GPIOE_CLK_ENABLE();__HAL_RCC_GPIOC_CLK_ENABLE();__HAL_RCC_GPIOA_C…...
中间件-消息队列
SpringAMQP 任何语言只要遵循AMAP协议,都可以与RabbitMQ交互 生产者、队列、交换机、消费者 生产者Publisher:生产消息,发给交换机 交换机Exchange:接收生产者发送的消息。知道如何处理消息,例如递交给某个特别队列、…...
go游戏后端开发32:自摸杠处理逻辑
当我们在自摸杠时,实际上在杠完之后,我们还需要进行一个删除操作。因此,我们需要在上面拷贝一个删除操作。由于这是自摸杠,所以这个地方需要删除四次。在这里,我们需要注意的是,自摸杠时,传过来…...
AI创业风向标:构建下一代「AI叙事创作平台」
随着技术的进步和市场需求的爆发,AI故事叙述平台正成为投资者和创业者关注的焦点。本文将探讨为何这一赛道值得关注,并提供一些关于如何构建成功的AI叙事创作平台的战略建议。 一、为什么这是2025年值得关注的赛道? 1. 底层需求的爆发 人类永恒的故事需求:全球每月有超过…...
拜特科技签约惠生工程,携手打造高效资金管理系统
近日,拜特科技成功签约惠生工程(中国)有限公司(以下简称“惠生工程”)资金管理系统项目。此次双方携手打造一套先进的资金管理系统,为惠生工程的战略发展注入强劲新动力,推动其资金管理迈向更高水平。 惠生工程作为行…...
快瞳宠物肢体关键点检测:让宠物设备更懂“猫言狗语”
在宠物经济高速发展的今天,智能设备已渗透到养宠生活的方方面面。然而,如何让设备真正理解宠物的行为意图?快瞳科技推出的宠物肢体关键点检测技术,通过精准捕捉宠物肢体动作,为智能喂食、健康监测、行为训练等场景提供…...
【安卓】APP生成器v1.0,生成属于你的专属应用
今天作者给大家分享一个超级好用的手机APP。还在为反复搜索常用网站抓狂?今天安利一款颠覆性神器——它能将你所有心头好的网页变成专属按钮,像搭乐高一样DIY你的「软件」,从此告别收藏夹混乱!小说党、资讯控、摸鱼达人集体狂喜&a…...
详细解读react框架中的hooks
React Hooks 是 React 16.8 引入的一项革命性特性,它允许你在函数组件中使用状态(state)和其他 React 特性,而无需编写 class 组件。下面将详细解读 React Hooks 的核心概念、常用 Hooks 及其工作原理。 一、Hooks 的核心概念 1. 什么是 Hooks Hooks …...
机器学习01-支持向量机(SVM)(未完)
参考浙大 胡浩基老师 的课以及以下链接: https://blog.csdn.net/m0_74100344/article/details/139560508 https://blog.csdn.net/2301_78630677/article/details/132657023 https://blog.csdn.net/lsb2002/article/details/131338700 一、一些定义 T是倒置&…...
Java进阶版线程池(超详细 )
线程池 线程池工具类 Executors Executors 是 Java 提供的一个工具类,它包含了多个静态方法,能够方便地创建不同类型的线程池。 newFixedThreadPool 创建一个固定大小的线程池,线程池中的线程数量固定,当有新任务提…...
场外期权只适合上涨行情吗?
场外期权与直接进行期货市场操作相比,场外期权让我们有了更多的选择空间。”目前期权市场有了更多合适的风险管理模式,场外期权衍生品工具与其需求不谋而合,适合做以小博大,做各种对冲大盘下跌风险等等策略,下文为大家…...
echarts图表相关
echarts图表相关 echarts官网折线图实际开发场景一: echarts官网 echarts官网 折线图 实际开发场景一: 只有一条折线,一半实线,一半虚线。 option {tooltip: {trigger: "axis",formatter: (params: any) > {const …...
【操作系统(Linux)】——多线程对共享变量访问的同步与互斥
一、多线程对共享变量的非互斥访问 我们将要做的:构造多线程共享变量竞争的案例,并分析现象发生的原因,进而思考解决方式。 案例源代码: #include <stdio.h> #include <stdlib.h> #include <pthread.h> #inc…...
deeplabv3+街景图片语义分割,无需训练模型,看不懂也没有影响,直接使用,cityscapes数据集_16
目录 1、下载链接1.1、CSDN链接,含权重文件直接使用,建议直接下这个,还不限速。1.2 Github链接: 2、下载代码,下载预训练好的权重3、预测代码4、像素提取,或者说类别提取5、文档部分内容截图6、其他数据处理…...
[前端]从人体结构看网页三要素:HTML、CSS 与 JavaScript
目录 一、HTML:网页的 “骨架” 二、CSS:网页的 “血肉” 三、JavaScript:网页的 “神经系统” 四、三者协同构建精彩网页 在互联网的浩瀚海洋中,网页是我们与世界交互的重要窗口。一个精彩的网页背后,离不开 HTML、CSS 和 JavaScript 这三位 “幕后英雄”。有趣的是,…...
【Leetcode】3375. 使数组的值全部为 K 的最少操作次数
文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接🔗 给你一个整数数组 nums 和一个整数 k 。 如果一个数组中所有 严格大于 h 的整数值都 相等 ,那么我们称整数 h 是 合法的 。 比方说,如果 nums [10, 8, 10…...
封装uniapp request promise化
uniapp request 封装 一、 封装方法1. 使用 promis 封装 request2. 封装 api 在 api.js3.在要请求的页面 调用 api 一、 封装方法 1. 使用 promis 封装 request const BASE_URL 你的url接口 //比如 http://198.12.3.3/pzexport function request(config {}){let {url,dat…...
架构演进成熟度校验体系构建
架构演进成熟度校验体系构建 ——基于电商价格服务Checklist的图形化实践指南 一、成熟度校验全景视图 #mermaid-svg-tXchQ6nY7QzNUrL1 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-tXchQ6nY7QzNUrL1 .error-ico…...
Llama 4全面评测:官方数据亮眼,社区测试显不足之处
引言 2025年4月,Meta正式发布了全新的Llama 4系列模型,这标志着Llama生态系统进入了一个全新的时代。Llama 4不仅是Meta首个原生多模态模型,还采用了混合专家(MoE)架构,并提供了前所未有的上下文长度支持。本文将详细介绍Llama 4…...
kotlin 多个fragment beginTransaction容器添加使用
在Kotlin中如何使用Fragment的beginTransaction来添加多个Fragment到容器中。我需要先回顾一下Fragment的基本用法,然后考虑多个Fragment的情况。 FragmentTransaction的beginTransaction是用来开启一个事务,然后添加、替换或移除Fragment。通常&#x…...
(PTA) L2-011-L2-015
L2-012 关于堆的判断 由于没有得到AC代码(1,3测试点错误),这里先不做展示,等后续复盘的时候进行补充。 L2-011 玩转二叉树 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序…...
管理Linux服务器的用户和组
用户/组 命令符会展示当前用户名和主机名 创建用户,同时创建同名组 useradd 用户名 设置密码 passwd 用户名 切换用户登录 su 用户名 删除用户 userdel -r 用户名 记录用户信息的文件 /etc/passwd 记录密码(密文)信息的文件 /etc/sh…...
奇安信驻场面试题
《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇网安资料库https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…...
Testbench设计
一、几个名词: 被仿真的文件叫DUT(Design under Test) 编写Testbench的目的 验证设计有没问题。 怎么写Testbench? 四、Teshbench各个部分的写法: 外部信号就是外面连接的信号。...
使用IPython有哪些好处?
这里总结了50个使用IPython的好处,大大提升开发效率! 什么是IPython?可能很多人已经在用,却不知道它到底是什么。 根据维基百科的解释: IPython是一种基于Python的交互式解释器,提供了强大的编辑和交互功能…...
加油站小程序实战教程10开通会员
目录 1 修改用户登录逻辑2 创建变量3 调用API总结 我们上一篇搭建了开通会员的界面,有了界面的时候就需要加入一些逻辑来控制界面显示。我们的逻辑是当用户打开我的页面的时候,在页面加载完毕后调用API看用户是否已经开通会员了,如果未开通就…...
NO.84十六届蓝桥杯备战|动态规划-路径类DP|矩阵的最小路径和|迷雾森林|过河卒|方格取数(C++)
路径类dp是线性dp的⼀种,它是在⼀个nm的矩阵中设置⼀个⾏⾛规则,研究从起点⾛到终点的⽅案数、最⼩路径和或者最⼤路径和等等的问题 矩阵的最小路径和_牛客题霸_牛客网 状态表⽰: dp[i][j]表⽰:到达[i, j]位置处,最⼩…...
WHAT - React 技术栈常用库/工具
目录 基础类状态管理路由管理UI 组件库开发工具 / 辅助库测试相关表单和数据展示其它实用类代码重构应用迁移:PWA代码组织与架构建议(选项) 下面是一个 React 技术栈常用库/工具清单,按不同分类整理,涵盖开发、状态管理…...
FreeSWITCH的SIP配置
确认 FreeSWITCH 的 SIP 配置 FreeSWITCH 的 SIP 配置文件通常位于 /usr/local/freeswitch/conf/sip_profiles 目录下。默认情况下,FreeSWITCH 使用 internal.xml 和 external.xml 作为 SIP 配置文件。 查看 internal.xml 配置 编辑 /usr/local/freeswitch/conf/sip…...
Spark核心知识总结
一、Spark运行架构 (一)整体结构 Spark框架采用标准master - slave结构,Driver为master管理作业任务调度,Executor为slave负责实际执行任务。 (二)核心组件 1. Driver:执行Spark任务的main方法&…...
第1节:计算机视觉发展简史
计算机视觉与图像分类概述:计算机视觉发展简史 计算机视觉(Computer Vision)作为人工智能领域的重要分支,是一门研究如何使机器"看"的科学,更具体地说,是指用摄影机和计算机代替人眼对目标进行识…...
2D 与 3D 连线效果全解析 | 从平面到立体
HT 是一个灵活多变的前端组件库,具备丰富的功能和效果,满足多种开发需求。让我们将其效果化整为零,逐一拆解具体案例,帮助你更好地理解其实现方案。 在此篇文章中,让我们一起深入探讨 2D 与 3D 的连线效果是如何实现的…...
Django Cookies 实际项目示例
Django Cookies 实际项目示例 推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 Django Cookies 实际项目示例介绍什么是 Django Cookies?为什么要关心 Django Cookies?Django Cookie…...
【问题排查】SQLite安装失败
启动 Django 自带的开发服务器 python manage.py runserver出现如下报错: [rootiZ2zedudtf2cwzi9argky2Z myproject]# python manage.py runserver Watching for file changes with StatReloader Performing system checks...System check identified no issues (…...
stream流Collectors.toMap(),key值重复问题
文章目录 一、问题二、问题示例三、原因四、解决方法4.1、方案一 一、问题 发现Collectors.toMap的一个坑,若key值重复的时候会抛异常。如: IllegalStateException: Duplicate key 男 二、问题示例 报错示例如下: import lombok.AllArgsC…...
STM32(基于标准库)
参考博客:江科大STM32笔记 Stm32外设 一、GPIO 基础 GPIO位结构 I/O引脚的保护二极管是对输入电压进行限幅的上面的二极管接VDD, 3.3V,下面接VSS, 0V,当输入电压 >3.3V 那上方这个二极管就会导通,输入电压产生的电流就会大部分充入VD…...
OpenStack Yoga版安装笔记(十八)Self-service networks配置笔记
1、官方文档 在OpenStack官方安装文档中,提供了两个网络配置选项: Option1:Provider networksOption2:Self-service networks 这两个选项并不冲突,可以在OpenStack环境中同时配置。 在《OpenStack Yoga版安装笔记&…...
2025年黑龙江建筑安全员 C3 证考试题库练习题
黑龙江建筑安全员 C3 证考试题库练习题 1、消防控制室是设有火灾自动报警设备和消防设施控制设备,用于接收、显示、处理( ),控制相关消防设施的专门处所2。 A. 安全信息 B. 设备信息 C. 通讯信号 D. 火灾报警信号 答案&…...