【玩转c++】c++ 中 STL 简介

news2024/12/25 4:05:37

  •  本期主题:介绍c++STL(标准模板库)
  • 博客主页:小峰同学
  • 分享小编的在Linux中学习到的知识和遇到的问题
  • 小编的能力有限,出现错误希望大家不吝赐
  • 身为程序员 ,不会有人没有女朋友吧。


  • 🍁1.什么是STL?

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


  • 🍁2.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版本,被G++/GCC采用,可移植性好, 可公开、修改甚至贩卖,从命名风格和编程 风格上看,阅读性非常高。我们后面学习STL要阅读部分源代码, 主要参考的就是这个版本。

  • 🍁3. STL的六大组件

 


  • 🍁4. STL的重要性

在笔试中

二叉树层序打印

重建二叉树

两个栈实现一个队列

笔试中经常出现的题中,不用STL 代码量就会变得巨大。

在工作中

网上有句话说:“不懂STL,不要说你会C++”。STL是C++中的优秀作品,有了它的陪伴,许多底层的数据结构 以及算法都不需要自己重新造轮子,站在前人的肩膀上,健步如飞的快速开发。


  • 🍁5. 如何学习STL

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

多看书,读书什么时候都有收获。一本书可以读很多遍,每一遍都会有很好的收获。


  • 🍁6.STL的缺陷

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

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

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

相关文章

[趣味][人工智能生成文字]chatGPT使用教程

ChatGPT 首先点击sign up注册,注册需要非中国手机号获取验证码,这里感谢一下alice的支援,没有好朋友的各位看到这里可以先去逛逛淘宝 注册后点击log in登录 然后直接输入想要生成的内容,点击右侧的小箭头 注意:根据Op…

cef浏览器加载过程实测ILoadHandler和IRequestHandler

针对方法GetResourceRequestHandler获取资源请求过程中,会多次发生请求,不知道何时加载完的问题,IRequestHandler没有了OnResourceLoadComplete和OnBeforeResourceLoad方法,如何判断是否加载完。使用browser.isLoading并不能真正的判断。所以想到了 OnFrameLoadEnd OnFram…

【STM32】详解独立看门狗的本质和使用步骤代码

一、看门狗 1、介绍 作为一个检测装置,发生意外情况能够报告并处理突发意外——复位。 复位中断属于不可屏蔽中断,属于优先级最高的中断 2、作用 两个看门狗(独立看门狗和窗口看门狗)均可用于检测并解决由软件错误导致的故障&…

设计没灵感,一定要逛这5个网站。

本期给大家分享几个设计灵感网站,希望对设计师们有所帮助,话不多说直接上内容。 1、dribbble Dribbble - Discover the World’s Top Designers & Creative Professionals Dribble是一个很大的设计作品共享网站,也涵盖了很丰富的设计作…

HTTP 和 HTTPS 它们之间的区别在哪里?

您可能已经听说过很多有关互联网术语 HTTP 和 HTTPS 的信息。您知道两者之间的区别是什么吗?HTTP 在随着技术的不断更新已经慢慢开始消失在互联网之中。在浏览器的地址栏中,您访问的每个网站的 URL 始终以 HTTP 或 HTTPS 开头,而目前 HTTPS 协…

SSM校园网报修系统计算机毕业论文java毕业设计选题源代码

💖💖更多项目资源,最下方联系我们✨✨✨✨✨✨ 目录 Java项目介绍 资料获取 Java项目介绍 《SSM校园网报修系统》该项目采用技术:jsp springmvcspringmybatis cssjs等相关技术,项目含有源码、文档、配套开发软件、…

02源码分析-ThreadLocal详解-并发编程(Java)

文章目录1 ThreadLocal内部结构2 主要方法源码分析2.1 set()方法2.1.1 getMap()2.1.2 createMap()2.1.3 ThreadLocalMap.set()2.1.4 replaceStaleEntry()2.1.5 expungeStaleEntry()2.1.6 cleanSomeSlots()2.1.7 rehash()2.1.8 expungeStaleEntries()2.1.9 resize()2.2 get()方法…

Minitab使用图形渲染和数据描述

Minitab使用图形渲染和数据描述 Minitab是最流行的质量、分发和分析程序之一,实际上是OMNITAB软件的一个较小版本。六西格玛的软件是开发组织质量开发和改进的合适工具,具有处理、计算、分析、报告和其他数据工具的强大能力。的确如此。在本软件的上下文…

HTML列表与表格详解_高效学习攻略

HTML列表与表格HTML篇_第六章、HTML列表与表格一、列表1.1定义1.2列表的分类1.3列表的对比二、表格2.1表格的定义2.2表格的边框2.3表格的表头单元格2.4表格标题 <caption>2.5表格的高度和宽度2.6表格背景2.7表格空间2.8合并单元格2.9表格头部、主题和页脚2.10表格的嵌套H…

《可解释机器学习公开课》来了!

Datawhale开源 联合发布&#xff1a;同济子豪兄、Datawhale文章目录1.什么是机器学习的可解释性分析。2.学可解释机器学习有什么用&#xff1f;3.可解释机器学习开源学习计划&#xff0c;同济子豪兄和 Datawhale 联合发布。什么是可解释AI现代的机器学习和人工智能&#xff0c;…

redis 的雪崩、穿透和击穿

面试题 了解什么是 redis 的雪崩、穿透和击穿&#xff1f;redis 崩溃之后会怎么样&#xff1f;系统该如何应对这种情况&#xff1f;如何处理 redis 的穿透&#xff1f; 面试官心理分析 其实这是问到缓存必问的&#xff0c;因为缓存雪崩和穿透&#xff0c;是缓存最大的两个问…

【C++】list的模拟实现来咯

文章目录一、整体框架二、迭代器1、list迭代器的引入2、迭代器的区分3、list迭代器的实现4、模板三、增删查改1、insert和erase2、push_back和push_front3、pop_back和pop_front四、list的接口1、构造2、析构3、赋值重载五、list和vector的对比一、整体框架 list的本质就是带头…

中润光学通过科创板注册:预计年营收4亿 拟募资4亿

雷递网 雷建平 12月9日嘉兴中润光学科技股份有限公司&#xff08;简称&#xff1a;“中润光学”&#xff09;日前通过注册&#xff0c;准备在科创板上市。中润光学计划募资4.05亿&#xff0c;其中&#xff0c;2.7亿元用于高端光学镜头智能制造项目&#xff0c;5629万元用于高端…

【HDU No. 2243】单词情结 考研路茫茫——单词情结

【HDU No. 2243】单词情结 考研路茫茫——单词情结 杭电OJ 题目地址 【题意】 单词和词根仅由小写字母组成。给定N个词根&#xff0c;求长度不超过L 且至少包含一个词根的单词可能有多少个&#xff1f; 若有两个词根aa和ab&#xff0c;则长度不超过3且至少包含一个词根的单词…

IO流,,

标题1. 文件基础知识1.1 文件基础知识-文件流1.2 创建文件的3种方式(不是目录)3. 获取文件的相关信息4. 删除文件及创建多级(一极)目录2. IO流原理及流的分类2.1 InputStream 字节输入流2.1.1 FileInputStream2.1.2 FileOutStream2.1.3 拷贝文件2.2 FileReader2.3 FileWriter2.…

MyCat教程【mysql主从复制实现】

单个mysql数据库在处理业务的时候肯定是有限的&#xff0c;这时我们扩展数据库的第一种方式就是对数据库做读写分离&#xff08;主从复制&#xff09;,本文我们就先来介绍下怎么来实现mysql的主从复制操作。 1. 读写分离 原理&#xff1a;需要搭建主从模式&#xff0c;让主数…

Python实现房产数据分析与可视化 数据分析 实战

Python库的选择 话说&#xff0c;工欲善其事&#xff0c;必先利其器&#xff0c;虽然我们已经选择Python来完成剩余的工作&#xff0c;但是我们需要考虑具体选择使用Pytho的哪些利器来帮助我们更快更好地完成剩余的工作。 我们可以看一下&#xff0c;在这个任务中&#xff0c…

elasticsearch global 、 filters 和 cardinality 聚合

文章目录1. 背景2、解释1、global2、filters3、cardinality3、需求4、前置条件4.1 创建mapping4.2 准备数据5、实现3的需求5.1 dsl5.2 java 代码5.3 运行结果6、实现代码7、参考文档1. 背景 此处将单记录一下 global 、 filters和cardinality的聚合操作。 2、解释 1、global…

C++学习笔记(十八)——stack和queue

stack stack的介绍 stack接口的介绍 queue queue的介绍 queue接口的介绍 stack stack的介绍 stack是一种先进后出的容器. stack是一种容器适配器,专门用在具有后进先出(last-in first-out)操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作.stack是作…

Java——封装——Encapsulation

封装什么是封装访问权限修饰符导入import一个包package&#xff1f;Static到底是什么面向对象的三大特征&#xff1a;封装、继承、多态。今天我们来浅谈一下封装。什么是封装 我们不用那么专业那么难懂的语言讲解&#xff0c;我们就走一波野路子&#xff1a;封装就是指用priva…