【C++】标准模板库 STL 简介


  •   🧑‍🎓个人主页:简 料

  •   🏆所属专栏:C++

  •   🏆个人社区:越努力越幸运社区

  •   🏆简       介:简料简料,简单有料~在校大学生一枚,专注C/C++/GO的干货分享,立志成为您的好帮手 ~


C/C++学习路线 (点击解锁)
❤️C语言
❤️初阶数据结构与算法
❤️C++
❤️高阶数据结构
❤️Linux系统编程与网络编程

文章目录

  • 🏆前言
  • 🧑‍🎓什么是STL
  • 🧑‍🎓STL的版本
  • 🧑‍🎓STL的六大组件
  • 🧑‍🎓STL的重要性
  • 🧑‍🎓如何学习STL
  • 🧑‍🎓STL的缺陷
  • 🏆写在最后


🏆前言

🌀 STL是C++标准库的一部分,它在C++程序中扮演着重要的角色。它使用模板(template)来实现各种数据结构,包括序列容器、关联容器、无序容器等,并提供相应的迭代器、算法、适配器、仿函数等部件。这些部件可以用来实现各种复杂的数据结构和算法,从而大大简化了程序员的编程工作。
🌀 在C++中,stl的位置非常核心,它几乎渗透在C++程序的角角落落里。无论是开发底层系统,还是开发上层应用,stl都扮演着不可或缺的角色。它不仅提供了高效的数据结构和算法,还提供了一种标准化的编程模式,使得程序具有良好的可读性、可维护性和可重用性。
🌀 总之,stl在C++中的位置非常重要,它是C++标准库的核心组成部分,为程序员提供了强大的工具和资源,帮助程序员编写高质量、高效率的程序。


本章将带你快速了解STL,接下来就来认识认识一下STL吧~


🧑‍🎓什么是STL

 
  前言部分大致说的差不多了,这里就不多说了~
 

STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。


🧑‍🎓STL的版本

  • 原始版本
    Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源使用。 HP 版本–所有STL实现版本的始祖。
  • P. J. 版本
    由P. J. Plauger开发,继承自HP版本,被Windows Visual C++采用,不能公开或修改,缺陷:可读性比较低,符号命名比较怪异。
  • RW版本
    由Rouge Wage公司开发,继承自HP版本,被C+ + Builder 采用,不能公开或修改,可读性一般。
  • SGI版本
    由Silicon Graphics Computer Systems,Inc公司开发,继承自HP版 本。被GCC(Linux)采用,可移植性好,可公开、修改甚至贩卖,从命名风格和编程 风格上看,阅读性非常高。我们后面学习STL要阅读部分源代码,主要参考的就是这个版本。

🧑‍🎓STL的六大组件

  • STL的六大组件分别是:
  1. 容器(containers):如vector、list、deque、set、map等,用来存放数据。从实现的角度看,stl容器是一种类模板。
  2. 算法(algorithms):如sort、search、copy、erase等。从实现的角度看,stl算法是一种函数模板。
  3. 迭代器(iterators):扮演容器与算法之间的胶合剂,是所谓的“泛型指针”。从实现的角度看,迭代器是一种将operator*、operator->、operator++、operator–等指针相关操作予以重载的类模板。
  4. 仿函数(functors):行为类似函数,可以作为算法的某种策略。仿函数是一种重载了operator()的类或类模板。
  5. 适配器(adapters):一种用来修饰容器、仿函数、迭代器接口的东西。
  6. 配置器(allocators):负责空间配置与管理。
  • 这六大组件可以彼此组合套用,以实现更复杂的功能。

在这里插入图片描述


🧑‍🎓STL的重要性

  • 在笔试中:会有几道算法题,这时候,使用C++的小伙伴就不得不使用STL来提高效率了~
  • 在面试中:面试官经常会问到关于STL的知识,所以熟练STL的小伙伴可是加分项噢~
  • 在工作中:网上有句话说:“不懂STL,不要说你会C++”。STL是C++中的优秀作品,有了它的陪伴,许多底层的数据结构以及算法都不需要自己重新造轮子,站在前人的肩膀上,健步如飞的快速开发。

🧑‍🎓如何学习STL

摘:
在这里插入图片描述

简单总结一下:学习STL的三个境界:能用,明理,能扩展 。


🧑‍🎓STL的缺陷

  1. STL库的更新太慢了。这个得严重吐槽,上一版靠谱是C++98,中间的C++03基本一些修订。C++11出来已经相隔了13年,STL才进一步更新。
  2. STL现在都没有支持线程安全。并发环境下需要我们自己加锁。且锁的粒度是比较大的。
  3. STL极度的追求效率,导致内部比较复杂。比如类型萃取,迭代器萃取。
  4. STL的使用会有代码膨胀的问题,比如使用vector/vector/vector这样会生成多份代码,当然这是模板语法本身导致的。

🏆写在最后

💝本章主要是给大家介绍C++当中的标准模板库(STL),只要你用C++,那必然脱离不了STL的存在,他的重要性是毋庸置疑的。最后用上文的一段文字来结尾:网上有句话说:“不懂STL,不要说你会C++”。STLC++中的优秀作品,有了它的陪伴,许多底层的数据结构以及算法都不需要自己重新造轮子,站在前人的肩膀上,健步如飞的快速开发。😊


❤️‍🔥后续将会继续输出有关C++的文章,你们的支持就是我写作的最大动力!

感谢阅读本小白的博客,错误的地方请严厉指出噢~

请添加图片描述

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

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

相关文章

B站短视频如何去水印?一键解析下载B站视频!

在浏览B站视频时,我们有时会遇到带有水印的场景。这些水印可能会干扰我们对视频内容的观看体验,特别是在全屏观看时。此外,当我们想要保存或分享这些视频时,水印也会成为一种障碍。因此,去除水印的需求就变得非常迫切。…

fio测试磁盘速度

注意 测试 读速度 不加 --readonly fio 会 先写 文件 再 读取 直接 --readonly 参数 防止 fio 写入 文件 time fio -filename./test1 -direct1 -iodepth 1 -thread -rwrandwrite -ioenginepsync -bs1m -size1G -numjobs1 -runtime1000 -group_reporting -namemytesttime fio…

PXE高效批量网络装机

什么是PXE PXE是由Intel公司开发的最新技术,全称为“Preboot Execution Environment”(预启动执行环境),工作于Client/Server的网络模式。它允许工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统。…

机器学习赋予用户“超人”的能力来打开和控制虚拟现实中的工具

原创 | 文 BFT机器人 最近,剑桥的研究人员开发了一种虚拟现实应用程序,只需用户手部的移动即可打开和控制一系列3D建模工具。 来自剑桥大学的研究人员利用机器学习开发了“HotGestures”类似于许多桌面应用程序中使用的热键(快捷键&#xff…

fastdfs-client-java-1.30 maven 打包安装

1. 进入源代码目录,打开cmd mvn clean install 或者 mvn package 问题不大的话会在同级目录target目录下生成打包后文件 2. 当前目录下cmd进行maven安装 mvn install:install-file -DgroupIdorg.csource -DartifactIdfastdfs-client-java -Dversion${version} -D…

AX6000路由器更改算号器密码为自定义密码的方法

首先,你开启了此路由的SSH服务后,就可以用算号器密码SSH登录到路由器中了, 但如果你想改root的密码为自己自定义的密码时, 发现密码总是在路由器重启后,就失效了【即:又恢复为算号器的密码了】。 具体的开启SSH的方法,请参考本博客的相关文章,链接如下: 小米AX600…

Polygon zkEVM的Dragon Fruit和Inca Berry升级

1. Polygon zkEVM的Dragon Fruit升级 2023年8月31日,Polygon zkEVM团队宣称启动了其Mainnet Beta的Dragon Fruit升级的10天timelock,预计将于2023年9月11日激活。 Dragon Fruit升级点有: 改进了网络支持了最新的以太坊opcode——PUSH0 1.…

HTTP(Hypertext Transfer Protocol)协议

文章目录: 什么是HTTP?认识URLurlencode 和 urldecodeHTTP 协议请求和响应格式HTTP 请求(Request)HTTP 响应(Response) HTTP 请求方法HTTP 的状态码常见的Header 什么是HTTP? HTTP(…

用向量数据库Milvus Cloud搭建GPT大模型+私有知识库的定制AI助手——PPT大纲助手

随着人工智能技术的不断发展,AI助手在各行各业中扮演着越来越重要的角色。在商业领域,PPT演示是一种常见的沟通方式,而定制化的PPT大纲助手能够极大地提高PPT制作效率和质量。本文将介绍如何利用向量数据库Milvus Cloud搭建GPT大模型和私有知识库,构建一款高效的PPT大纲助手…

产品智能化成照明企业“必选题” 小匠物联交出标准答卷

7月20日,由佛山市科学技术局、佛山市工业和信息化局、佛山市科学技术协会指导,佛山市照明灯具协会主办的“2023佛山市智能照明&驱动新技术研讨会”在佛山市国家火炬创新创业园宜尚PLUS酒店隆重举行。此次会议邀请近100位知名企业产品经理和研发工程师…

金蝶云星空ScpSupRegHandler任意文件上传漏洞复现 [附POC]

文章目录 金蝶云星空ScpSupRegHandler任意文件上传漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 金蝶云星空ScpSupRegHandler任意文件上传漏洞复现 [附POC] 0x01 前言 免责声明:请…

2.发送邮件+开发注册功能

目录 1.发送邮件 1.1 邮箱设置:启用客户端 SMTP 服务 1.2 S

21、ila

1、bd文件中添加debug信号,右击信号线,debug。

3 个常识点必须先了解!0基础入门Python!

学习一门新的语言之前,首先简单了解下这门语言的背景。Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于 1989 年发明,第一个公开发行版发行于 1991 年。 Python 在设计上坚持了清晰划一的风格,这…

mongodb 日志详情

1 mongodb日志简介 MongoDB的日志包括两个主要部分:操作日志(oplog)和系统日志。 1.1 操作日志 操作日志(oplog)是一个特殊的集合,用于记录所有对数据库进行的操作(如插入、更新和删除&#x…

Xrdp+内网穿透实现远程访问Linux Kali桌面

XrdpCpolar实现远程访问Linux Kali桌面 文章目录 XrdpCpolar实现远程访问Linux Kali桌面前言1. Kali 安装Xrdp2. 本地远程Kali桌面3. Kali 安装Cpolar 内网穿透4. 配置公网远程地址5. 公网远程Kali桌面连接6. 固定连接公网地址7. 固定地址连接测试 前言 Kali远程桌面的好处在于…

交易机器人-微信群通知

微信公众号:大数据高性能计算 1 背景 背景是基于人工去做交易本身无法做到24小时无时无刻的交易,主要是虚拟币本身它是24小时交易,人无法做到24小时盯盘,其次就是如果你希望通过配置更加复杂的规则甚至需要爬取最新的信息走模型进行量化交易的时候,就需要自己去做一些量化…

5V升压充电 双节锂电管理芯片 升压型双节锂电管理芯片

SC5080是一款5V 输入,支持双节锂电池的升压充电管理 IC 。 。 SC5080集成功率MOS,采用异步开关架构,使其在应用时仅需 要极少的外围器件,可有效减少整体方案尺寸,降低BOM成本 ,可有效减少整体方案尺寸&…

html 菜单点击切换样式,菜单<a> 控制iframe

一.菜单控制iframe&#xff0c;只需要超链接加target <a id"toCalendar" class"nav-link" href"fullCalendar" target"my_iframe"><iframe id"mainContent" src"" name"my_iframe" height&q…

竞赛选题 行人重识别(person reid) - 机器视觉 深度学习 opencv python

文章目录 0 前言1 技术背景2 技术介绍3 重识别技术实现3.1 数据集3.2 Person REID3.2.1 算法原理3.2.2 算法流程图 4 实现效果5 部分代码6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习行人重识别(person reid)系统 该项目…