Lesson07---STL简介(了解)

news2024/11/10 13:16:29
  • 1. 什么是STL
  • 2. STL的版本
  • 3. STL的六大组件
  • 4. STL的重要性
  • 5. 如何学习STL
  • 6.STL的缺陷

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

 3. STL的六大组件

4. STL的重要性  

        1. 在笔试中

把二叉树打印成多行_牛客题霸_牛客网 (nowcoder.com)

重建二叉树_牛客题霸_牛客网 (nowcoder.com)

用两个栈实现队列_牛客题霸_牛客网 (nowcoder.com)

2. 在面试中

 3. 在工作中

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

5. 如何学习STL  

简单总结一下:学习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/2080929.html

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

相关文章

【网络】P2P打洞原理

本文首发于 ❄️慕雪的寒舍 1. 引入 如果你折腾过NAS或者BT下载等等玩意,可能听说过“P2P打洞”这一技术名词。简单来说,P2P打洞可以让我们直接在外网访问内网的设备,从而让没有公网IP的家庭设备也能获得“公网直连”的速度。 比如绿联、极…

【JAVA]DAY 2在网页中输出日期和时间,实时还是静止?

一、如何输出日期文本 使用document.write(Date()); 会在网页中输出当前的日期和时间。在 2024 年 8 月 28 日星期三执行这段代码,可能会输出类似 “Wed Aug 28 2024 [具体时间]” 这样的内容。 Date()是 JavaScript 中的一个内置对象,用于处理日期和…

【机器学习】数据预处理-特征工程与特征选择

目录 一、特征工程 二、数据变换 1.变换 2.归一化 三、数据清洗 1.异常数据 2.数据清洗 四、特征选择 1.Filter过滤法 2.Wrapper包裹法 ... 3.Embedded嵌入法 ... 五、降维算法 1.SVD 2.PCA 一、特征工程 特征工程就是从原始数据提取特征的过程,这些…

免费可商用插画素材网站

1、https://undraw.co/illustrations 2、https://iradesign.io/ 3、https://storyset.com/ 4、https://delesign.com/free-designs/graphics/

【Linux篇】三分钟速通Linux基础命令

目录 1. Linux的目录结构 1.1 Linux的目录结构 1.2 /在Linux系统中的表示 2. linux命令基础 2.1 什么是命令和命令行 2.2 Linux命令的通用格式 2.3 ls命令 2.3.1 ls命令的参数的作用: 2.3.2 ls命令的选项 2.3.3 命令的选项组合使用 2.4 cd切换工作目录 2…

宋志平《有效的经营者》首发 高质量经营与企业高质量发展读书分享会圆满举办

走遍人生繁华,醉美江南水乡。8月25日,“美好生活,书香中国”城市行第七站——杭州站,在杭州市兴耀科创城•杭州双碳技术产业园圆满举办。本次活动以高质量经营与企业高质量发展读书分享会为主题,旨在深入推进全民阅读&…

Java基础(泛型)

文章目录 前言 一、泛型类的定义 1.1 泛型类的定义语法 1.2 代码使用示例 二、泛型类的使用语法 2.1 使用语法 2.2 泛型类注意事项 2.3 泛型类的使用小案例 三、从泛型类派生子类(2种情况) 3.1 子类和父类的泛型类型要保持一致 3.2 子类没有使用…

苹果秋季发布会前瞻:iPhone 16领衔新品盛宴

苹果定档9月9日,揭开新品神秘面纱 苹果公司近日正式宣布,将于9月9日在加州库比蒂诺的Apple Park,史蒂夫乔布斯剧院举办年度秋季新品发布会,主题为“It’s Glowtime”,预示着Siri界面将迎来一场华丽变身。此次发布会较原…

AUTOSAR_EXP_ARAComAPI.pdf的第4章笔记

为了理解AUTOSAR_EXP_ARAComAPI.pdf的第4章内容,生搬硬套的翻译了一把,准备先囫囵吞枣,再仔细理解。因为这些内容的理解也不是一时半会儿的。所以先放上来。 1.AUTOSAR_EXP_ARAComAPI.pdf的介绍 通常,阅读正式的规范并不是学习和…

【扩散模型(六)】IP-Adapter 是如何训练的?2 源码篇(IP-Adapter Plus)

系列文章目录 【扩散模型(二)】IP-Adapter 从条件分支的视角,快速理解相关的可控生成研究【扩散模型(三)】IP-Adapter 源码详解1-训练输入 介绍了训练代码中的 image prompt 的输入部分,即 img projection…

ASP.NET MVC+LayUI视频上传完整教程

前言 前段时间在使用APS.NET MVCLayUI做视频上传功能的时,发现当上传一些内存比较大的视频就会提示上传失败,后来通过查阅相关资料发现.NET MVC框架为考虑安全问题,在运行时对请求的文件的长度(大小)做了限制默认为4M…

缓存Mybatis一级缓存与二级缓存

缓存 为什么使用缓存 缓存(cache)的作用是为了减去数据库的压力,提高查询性能,缓存实现原理是从数据库中查询出来的对象在使用完后不销毁,而是存储在内存(缓存)中,当再次需要获取对象时,直接从内存(缓存)中提取,不再向数据库执行select语句,从而减少了对数据库的查询次数,因此…

力扣之字母异位词分组(python)

题目 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan", "ate", "nat&qu…

回归预测|基于鹅GOOSE优化LightGBM的数据回归预测Matlab程序 多特征输入单输出 2024年优化算法

回归预测|基于鹅GOOSE优化LightGBM的数据回归预测Matlab程序 多特征输入单输出 2024年优化算法| 文章目录 前言回归预测|基于鹅GOOSE优化LightGBM的数据回归预测Matlab程序 多特征输入单输出 2024年优化算法GOOSE-LightGBM 一、GOOSE-LightGBM模型原理:流程&#xf…

【STM32】IIC

超级常见的外设通信方式,一般叫做I方C。 大部分图片来源:正点原子HAL库课程 专栏目录:记录自己的嵌入式学习之路-CSDN博客 目录 1 基本概念 1.1 总线结构 1.2 IIC协议 1.3 软件模拟IIC逻辑 2 AT24C02 2.1 设备地址与…

华为手机数据丢失如何恢复?

在智能手机普及的今天,华为手机凭借其卓越的性能和用户体验赢得了众多用户的青睐。然而,在使用过程中,我们难免会遇到数据丢失或误删除的情况。面对这一困境,许多用户可能会感到束手无策。别担心,本文将为你提供一份全…

什么是响应式?

表达式: 用于表达式进行插值,渲染到页面之中 语法: {{ 表达式 }} 案例 <template><h1>{{ arr[2] }}</h1><h1>{{ 9 5 }}</h1><h1>{{ "神奇" }}</h1> </template><script setup> import { ref } from vue; …

react中配置Sentry

sentry 打开sentrySentry Docs | Application Performance Monitoring &amp; Error Tracking Software官网&#xff0c; 注册。根据提示创建应用后 在 React 应用中配置 Sentry 可以按照以下步骤进行&#xff1a; 安装 Sentry SDK: 在项目根目录下运行&#xff1a; npm in…

DDR5 Channel SI设计的挑战

DDR5延续了前几代数据速率不断提高的趋势。数据传输速度在3200至6400MT/s之间。同时将继续像前几代一样使用单端数据线的方式。为了帮助减少由高数据速率引起的信号完整性问题&#xff0c;DRAM端也会考虑加入判决反馈均衡&#xff08;DFE&#xff09;来减轻反射、ISI对信号传输…

十、Java异常

文章目录 一、异常简介二、异常体系图三、常见的异常3.1 常见的运行时异常3.2 常见的编译异常 四、异常处理4.1 异常处理的方式4.2 try-catch异常处理4.2.1 try-catch异常处理基本语法4.2.2 try-catch异常处理的注意细节 4.3 throws异常处理4.3.1 throws异常处理基本介绍4.3.2 …