STL相关介绍及具体应用

STL的诞生

C++的面向对象和泛型编程的思想目的就是提升代码复用性。为了建立数据结构和算法的一套标准,且避免重复无意义的代码工作,诞生了STL

STL基本概念

1、STL(Standard Template Library)称为标准模板库

2、STL从广义上分为:容器(container)、算法(algorithm)、迭代器(iterator)

3、迭代器作为桥梁,将容器和算法连接起来。容器使用大部分算法时,都需要用到迭代器

4、STL几乎所有的代码都采用了类模板或函数模板

STL的作用

在学习STL中的一些标准模板后,可以用里面现成的模板来完成自己的代码,大大减小了写代码的负担

STL六大组件

STL六大组件分别为:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器

(后两种不常用)

1、容器:用于存放数据的各种数据结构。如:vector、list、deque、set、map等

2、算法:用于实现各种功能的函数。如:sort、find、copy等

3、迭代器:扮演容器与算法之间的胶合剂

4、仿函数:行为类似函数,可作为算法的某种策略

5、适配器:一种用于修饰容器或仿函数或迭代器接口的东西。(类比电源适配器)

6、空间配置器:负责空间的配制和管理

STL容器、算法、迭代器

容器

常用的容器有:数组、链表、树、栈、队列、集合、映射表(哈希表、字典)

容器进一步分为序列式容器关联式容器

序列式容器:强调值的排序,序列式容器中的每个元素均有固定位置(eg:顺序表、栈、队列)

关联式容器:二叉树结构,各元素之间没有严格的物理上的顺序关系

算法

算法可以进一步分为质变算法和非质变算法

质变算法:指运算过程中不会改变区间内元素的内容。eg:拷贝、替换、删除等。

非质变算法:指运算过程中不会更改区间内的元素内容。eg:查找,计数,遍历,排序等

迭代器

作用:提供一种方法,使之能够依序寻访某个容器所含的各个元素,而又无需暴露该容器的内部表示方式。(由于迭代器使用时非常类似于指针,因此初学阶段我们可以将迭代器理解为指针)

用法:类型名::iterator  变量名;(变量名一般用it)

类型名=容器名+类模板参数列表

eg:创建一个vector容器,里面的元素为iint

vector<int> v;

则指向容器vector<int>的迭代器为vector<int>::iterator   it;(::前表作用域)

迭代器最常用的两种种类为:双向迭代器(支持读写,支持++/--)、随机访问迭代器(支持读写、自增/减、比较运算符等)

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

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

相关文章

awk命令使用方法

简介 awk 是一种强大的文本处理工具&#xff0c;可以用于处理结构化的文本数据。它可以根据指定的模式和动作来筛选、处理和格式化文本。 下面是一些常见的 awk 命令使用方法。 详细介绍 基本语法&#xff1a; awk pattern { action } filename其中&#xff0c;pattern 是用…

微软 Power Apps Canvas App 画布应用将上传的附件转化为base64编码操作

微软 Power Apps Canvas App 画布应用将上传的附件结合Power Automate转化为base64编码操作 在使用canvas app的过程中&#xff0c;我们有时需要将上传的文件转换为base64存入数据库或者&#xff0c;调用外部接口传参&#xff0c;那么看下如何将文件转化为base64编码格式。 首先…

【数据分析】numpy基础第三天

前言 本文只会讲解最常用的加、减、乘、除&#xff0c;点乘&#xff08;或叫矩阵乘法&#xff09;、还有广播机制。 本文代码 链接提取码&#xff1a;1024 第1部分&#xff1a;基础数学计算 使用NumPy进行基本的数学运算是十分直观和简单的。下面我们将展示一些基本的加、…

笨蛋总结JVM

笨蛋总结JVM 由于Java语言将自己的内存控制权交给了虚拟机&#xff0c;所以需要了解虚拟机的运行机制 &#xff08;主要用于回顾JVM&#xff09; 笨蛋总结JVM 笨蛋总结JVM1.运行时数据区域线程私有区域程序计数器Java虚拟机栈本地方法栈 线程共享区域堆方法区 1.2程序计数器…

SQL编程作业

题目&#xff1a; 创建职工表以及职工工资表 职工表字段&#xff1a;工号&#xff0c;姓名&#xff0c;性别&#xff0c;年龄 工资表字段&#xff1a;编号自增&#xff0c;职工工号&#xff0c;基础工资10000 通过触发器实现&#xff1a; 对职工进行添加时 工资表中也要体现当…

键盘上Ins键的作用

前几天编写文档时&#xff0c;发现一个问题&#xff1a;插入内容时&#xff0c;输入的字符将会覆盖光标位置后的字符。原来是按到了键盘上的 Ins键&#xff0c;解决方法是&#xff1a;再按一次 Ins键&#xff08;Ins键如果独立作为一键时&#xff0c;否则使用 “Fn Ins”组合键…

PHP雪花算法

雪花算法&#xff08;Snowflake Algorithm&#xff09;是一种分布式唯一ID生成算法&#xff0c;旨在满足分布式系统中对唯一标识的需求。它由Twitter公司的工程师Snowman&#xff08;Snowflake的创造者&#xff09;设计&#xff0c;用于生成全局唯一的ID&#xff0c;以应对分布…

并查集的学习

并查集可以理解为数学上的集合 并查集一般以树这种数据结构来储存每一个元素&#xff0c;判断两个元素是否为同一个集合&#xff0c;通常判断两个元素所在的树的根结点是否相同&#xff0c;因为比较两个元素是否是同一个树要向上查找根结点&#xff0c;所以一般用双亲表示法&a…

Sphinx的原理详解和使用

一、Sphinx介绍 1.1 简介 Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎。意图为其他应用提供高速、低空间占用、高结果 相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。当前系统内置MySQL和PostgreSQL 数据库数据源的支持&#xff0c;也…

限时回归!!!3D版《空洞骑士》!!!

空洞骑士是一款基于横板平台跳跃的传统风格2D动作冒险游戏。庞大的游戏世界交错相通&#xff0c;玩家控制小虫子去探索幽深黑暗的洞穴&#xff0c;成为了一代人茶余饭后的惦念&#xff0c;深受广大玩家们的喜爱。 这类平台跳跃游戏一般是游戏开发初学者以及独立游戏开发者们比…

【DRAM存储器十八】DDR3介绍

&#x1f449;个人主页&#xff1a;highman110 &#x1f449;作者简介&#xff1a;一名硬件工程师&#xff0c;持续学习&#xff0c;不断记录&#xff0c;保持思考&#xff0c;输出干货内容 参考资料&#xff1a;《镁光DDR3数据手册》 、《JESD79-3E》 最近忙于工作&#xff0…

Linux使用匿名管道实现进程池得以高效通信

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;Nonsense—Sabrina Carpenter 0:50━━━━━━️&#x1f49f;──────── 2:43 &#x1f504; ◀️ ⏸ ▶️ …

python基础四------完结(概念在下面,代码看不懂了再看)

# a_list [1,2,3,4,5] # # print(a_list)# 根据下标来删除列表中的元素 # 爬取的数据中 有个别的数据 是我们不想要的 那么我们就可以通过下标的方式来删除 # del a_list[2] # print(a_list)# b_list [1,2,3,4,5] # print(b_list) # pop是删除列表中的最后一个元素 # b_list.…

stack Error: EACCES: permission denied

报错 stack Error: EACCES: permission denied解决 npm install webpack --save-dev --unsafe-perm参考 npm报错stack Error: EACCES: permission denied, mkdir

Kali 基本命令大全

一、系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件- (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpu…

蓝桥杯-岛屿个数-bfs-dfs算法

小蓝得到了一副大小为 M N 的格子地图&#xff0c;可以将其视作一个只包含字符‘0’&#xff08;代表海水&#xff09;和 ‘1’&#xff08;代表陆地&#xff09;的二维数组&#xff0c;地图之外可以视作全部是海水&#xff0c;每个岛屿由在上/下/左/右四个方向上相邻的 ‘1’…

AP5216 平均电流型LED降压恒流驱动IC 手电筒汽车摩托车灯芯片

产品描述 AP5216 是一款 PWM工作模式, 高效率、外围简单、内置功率管&#xff0c;适用于5V&#xff5e;100V输入的高精度降压 LED 恒流驱动芯片。输出最大功率可达9W&#xff0c;最大电流 1.0A。AP5216 可实现全亮/半亮功能切换&#xff0c;通过MODE 切换&#xff1a;全亮/半亮…

SAP HANA 报错信息,如何根据报错关键词去进行处理

HANA建模其实上手会比较快&#xff0c;基本会SQL就可以进行开发。 在实际开发中&#xff0c;难点一个是建模思路&#xff0c;另外一个则是建模中报错的处理。 现在将HANA中报错进行一个整理&#xff0c;这里的并不是完整的报错信息&#xff0c;大家可以根据关键词进行查看。 …

ChatGPT更新了Mention功能,集结若干GPTs作战,AI智能体的心智入口;向量数据库的挑战和未来

&#x1f989; AI新闻 &#x1f680; ChatGPT更新了Mention功能&#xff0c;集结若干GPTs作战&#xff0c;AI智能体的心智入口 摘要&#xff1a;OpenAI在ChatGPT中引入了一个新功能&#xff0c;允许用户在聊天时任意一个GPTs&#xff08;即ChatGPT最新推出的AI Agent 智能应用…

scrapy的入门使用

1 安装scrapy 命令: sudo apt-get install scrapy或者&#xff1a; pip/pip3 install scrapy2 scrapy项目开发流程 创建项目: scrapy startproject mySpider生成一个爬虫: scrapy genspider itcast itcast.cn提取数据:     根据网站结构在spider中实现数据采集相关内…