【c++】 STL的组件简介与容器的使用时机

STL六大组件简介

STL提供了六大组件,彼此之间可以组合套用,这六大组件分别是:容器算法迭代器仿函数适配器(配接器)空间配置器

  • 容器:各种数据结构,如vector、list、deque、set、map等,用来存放数据,从实现角度来看,STL容器是一种class template。
  • 算法:各种常用的算法,如sort、find、copy、for_each。从实现的角度来看,STL算法是一种function tempalte.
  • 迭代器:扮演了容器与算法之间的胶合剂,共有五种类型,从实现角度来看,迭代器是一种将operator* , operator-> , operator++,operator–等指针相关操作予以重载的class template. 所有STL容器都附带有自己专属的迭代器,只有容器的设计者才知道如何遍历自己的元素。原生指针(native pointer)也是一种迭代器。
  • 仿函数:行为类似函数,可作为算法的某种策略。从实现角度来看,仿函数是一种重载了operator()的class 或者class template
  • 适配器:一种用来修饰容器或者仿函数或迭代器接口的东西。
  • 空间配置器:负责空间的配置与管理。从实现角度看,配置器是一个实现了动态空间配置、空间管理、空间释放的class tempalte.
  • STL六大组件的交互关系,容器通过空间配置器取得数据存储空间,算法通过迭代器存储容器中的内容,仿函数可以协助算法完成不同的策略的变化,适配器可以修饰仿函数。

STL的优点:

  • STL 是 C++的一部分,因此不用额外安装什么,它被内建在你的编译器之内。
  • STL 的一个重要特性是将数据和操作分离。数据由容器类别加以管理,操作则由可定制的算法定义。迭代器在两者之间充当“粘合剂”,以使算法可以和容器交互运作
  • 程序员可以不用思考 STL 具体的实现过程,只要能够熟练使用 STL 就 OK 了。这样他们就可以把精力放在程序开发的别的方面。
  • STL 具有高可重用性,高性能,高移植性,跨平台的优点。
  • 高可重用性:STL 中几乎所有的代码都采用了模板类和模版函数的方式实现,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。
  • 高性能:如 map 可以高效地从十万条记录里面查找出指定的记录,因为 map 是采用红黑树的变体实现的。
  • 高移植性:如在项目 A 上用 STL 编写的模块,可以直接移植到项目 B 上。

三、STL容器使用时机

四、STL容器的基本操作与接口 

string容器的基本操作与接口 

vector容器的操作与接口

deque容器的基本操作与接口

stact&queue栈和队列的基本操作与接口

list容器的基本操作与接口

仿函数的概念详解与基础实现​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/713667.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信云开发-- Mac安装 wx-server-sdk依赖

第一次上传部署云函数时,会提示安装依赖wx-server-sdk 一. 判断是否安装wx-server-sdk依赖 先创建一个云函数,然后检查云函数目录。 如果云函数目录下只显示如下图所示三个文件,说明未安装依赖。 如果云函数目录下显示如下图所示四个文件&a…

EdgeX Foundry 边缘物联网中间件平台

文章目录 1.EdgeX Foundry2.平台架构3.平台服务3.1.设备服务3.2.核心服务3.3.支持服务3.4.应用服务3.5.安全服务3.6.管理服务 EdgeX Foundry # EdgeX Foundryhttps://iothub.org.cn/docs/edgex/ https://iothub.org.cn/docs/edgex/edgex-foundry/1.EdgeX Foundry EdgeX Found…

Linux下设置网关以及网络相关命令

在Linux下设置网关以及进行网络相关的操作,通常需要使用一系列的命令。以下是一些常用的命令和步骤: 查看网络接口信息 ifconfig:用于查看网络接口的状态和配置信息(已淘汰)。ip link:显示本地的链路层设…

嵌入式 Linux 下的 LVGL 移植

目录 准备创建工程修改配置修改 lv_drv_conf.h修改 lv_conf.h修改 main.c修改 Makefile 编译运行更多内容 LVGL(Light and Versatile Graphics Library)是一个轻量化的、开源的、在嵌入式系统中广泛使用的图形库,它提供了一套丰富的控件和组件…

ConfigurableBeanFactory学习

简介 ConfigurableBeanFactory定义BeanFactory的配置。ConfigurableBeanFactory中定义了太多太多的api,比如类加载器,类型转化,属性编辑器,BeanPostProcessor,作用域,bean定义,处理bean依赖关系,合并其他ConfigurableBeanFactory,bean如何销毁。ConfigurableBeanFactory同时继…

微软为金融界带来革命性突破——推出Microsoft 365中的下一代AI助手:Microsoft Copilot for Finance

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

雷龙CS SD NAND(贴片式TF卡)测评体验

前段时间有幸免费得到了雷龙出品的贴片式的TF卡的芯片及转接板,两片贴片式nand芯片+一个转接板,一种一个已让官方焊接完好;如下图所示: 正面: 背面: 通过转接板,可以将CS SD NAND(贴…

数电实验之流水灯、序列发生器

最近又用到了数电实验设计的一些操作和设计思想,遂整理之。 广告流水灯 实验内容 用触发器、组合函数器件和门电路设计一个广告流水灯,该流水灯由 8 个 LED 组成,工作时始终为 1 暗 7 亮,且这一个暗灯循环右移。 1) 写出设计过…

关于DisableIEToEdge插件闪退问题的解决方案

关于DisableIEToEdge插件闪退问题.今天终于测试找到最佳解决方案了! 1.管理员权限运行Windows powershell. 2.执行一下两条命令修复系统环境 DISM.exe /Online /Cleanup-image /Restorehealth sfc /scannow 3.关闭Windows安全中心的所有安全选项。 4.管理员权限运行…

【计算机考研择校】四川大学vs电子科技大学哪个难度更大?

川大在文科,经管方面比科大强,医学在国内都很强。但工科方面特别是电子信息领域明显是科大强于川大。毕竟一个是综合大学,一个是工科大学不可同日而语。 就业上,电子科大在IT领域的社会声誉口碑不错。就业一向都很好。这个多问问…

.datastore@cyberfear.com.mkp勒索病毒的最新威胁:如何恢复您的数据?

导言: 我们享受着数字化带来的便利,但同时也要面对不断演进的网络威胁。最近出现的 .datastorecyberfear.com.mkp、[hendersoncock.li].mkp [hudsonLcock.li]、.mkp [myersairmail.cc].mkp 勒索病毒就是其中之一,它对我们的数据安全构成了…

张俊将出席用磁悬浮技术改变生活演讲

演讲嘉宾:张俊 空压机销售总监 亿昇(天津)科技有限公司 演讲题目:用磁悬浮技术改变生活 会议简介 “十四五”规划中提出,提高工业、能源领城智能化与信息化融合,明确“低碳经济”新的战略目标,热能产业是能源产业和…

Python环境下一种改进的基于梯度下降的自适应短时傅里叶变换

在数字信号处理技术中,傅里叶变换及其逆变换是一种信号时频分析方法。该方法将信号的时域描述及频域描述联系在一起,时域信号可通过正变换转变为频域信号,频域信号可通过逆变换转变为时域信号进行分析。但傅里叶变换及其逆变换是一种信号的整…

Linux/Centos 部署静态IP,解决无法访问目标主机、Destination Host Unreachable、无法ping通互联网的问题

Linux/Centos 部署IP,解决无法访问目标主机、Destination Host Unreachable、无法ping通互联网的问题 Linux/Centos 部署静态IP查物理机/自身电脑的IP设置VMware上的虚拟网络编辑器设置网卡IP,激活至此就可访问百度了 Linux/Centos 部署静态IP 需要注意…

软考基础知识2

1.DMA控制方式:直接内存存取。数据在内存与I/O设备间直接成块传送,不需要CPU的任何干涉,由DMA硬件直接执行完成。 例题: 2.程序计数器总是存下一个指令的地址。 例题: 3.可靠度的计算: 例题&#xff1a…

吸猫毛空气净化器哪个好?推荐除猫毛效果好宠物空气净化器品牌

当下有越来越多的家庭选择养宠物!尽管家里变得更加温馨,但养宠可能会带来异味和空气中的毛发增多可能会带来健康问题,这是一个大问题! 不想家里弥漫着异味,特别是来自宠物便便的味道,所以需要一款能够处理…

大语言模型LLM Pro+中Pro+(Prompting)的意义

—— Pro ,即Prompting,构造提示 1.LLM Pro中Pro(Prompting)的意义 Prompting不仅是大语言模型交互和调用的一种高效手段,而且已成为推动模型泛化能力和应用灵活性的关键技术路径,它不仅极大地拓展了模型功…

ABAP - SALV教程02 - 开篇:打开SALV的三种方式之二

全屏模式生成SALV的方式:http://t.csdnimg.cn/CzNLz本文讲解生成可控模式的SALV,该方式需要依赖自己创建屏幕的自定义控件区域(Custom Control)实现步骤:需要注意的点是SALV的实例对象和dispaly方法一定是在屏幕PBO事件…

利用IP地址识别风险用户:保护网络安全的重要手段

随着互联网的发展和普及,网络安全问题日益突出,各种网络诈骗、恶意攻击等风险不断涌现,给个人和企业的财产安全和信息安全带来了严重威胁。在这样的背景下,利用IP地址识别风险用户成为了保护网络安全的重要手段之一。IP数据云探讨…

Qt常用的多线程使用方式

目前(Qt5)常用的多线程的方式? 1、派生于QThread然后重写run()函数 2、通过将派生QObject的类对象通过moveToThread()来移动到新的线程中 3、通过inherit QRunnable类然后重写run()方法、然后借助QThreadPool线程池来实现多线程 4、通过高级语法 QtConcurrent模块来…