C++STL简介

1.STL简介

1.1.STL的概念

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

1.2.STL的版本

  1. 原始版本:Alexander StepanovMeng Lee两人在惠普实验室完成了STL的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源使用。原始版本也叫HP版本,是所有STL实现版本的始祖。

  2. P.J.版本:由P.J.Plauger开发,继承自HP版本,被Windows Visual C++采用,不能公开或修改。缺陷是,可读性比较低,符号命名比较怪异。

  3. RW版本:由Rouge Wage公司开发,继承自HP版本,被C++ Builder采用,不能公开或修改,可读性一般(该编译器后来被微软的VS打败,已经没落)。

  4. SGI版本:由Silicon Graphics Computer SystemsInc公司开发,继承自HP版本。被GCC(Linux)采用,可移植性好,可公开、修改甚至贩卖,从命名风格和编程风格上看,阅读性非常高。后面学习STL要阅读部分源代码,主要参考的就是这个版本。

2.STL的六大组件

STL可以划分为六个组件:

STL组成
空间配置器
容器
配接器
迭代器
算法
仿函数

补充:“容器”实际上就是“数据结构”。

3.STL的学习境界

  1. 能熟用STL语法

  2. 明白STL的底层原理

  3. 能够根据需求来自主拓展、扩充STL

4.STL的缺陷

  1. 更新速度:这里值得吐槽的是STL的更新速度,比较靠谱的上一版本是C++98C++03是一些基本修订,13年后C++11才推出,STL才得以进一步更新。

  2. 线程安全:STL到现在都没有支持线程安全,并发环境下需要自己加锁,而且锁的粒度比较大。

  3. 过于效率:STL太追求效率了,导致内部比较复杂,例如:类型萃取、迭代器萃取等。

  4. 代码膨胀:STL的使用会有代码膨胀的问题,这是模板语法本身导致的。

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

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

相关文章

SAM 大模型Colab快速上手【Segment Anything Model】

Google Colab 是一个基于云的 Jupyter 笔记本环境,允许您通过浏览器编写、运行和共享 Python 代码。 它就像 Google 文档,但用于代码。 通过免费版本的 Google Colab,你可以获得带有约 16GPU VRAM 的 Nvidia Tesla T4 GPU,这对于…

centos手动离线安装php,nginx

1、CentOS 7上安装并配置Nginx https://www.cnblogs.com/xujiecnblogs/p/16843984.html /usr/local/nginx/sbin/nginx #启动 /usr/local/nginx/sbin/nginx -s stop #关闭 /usr/local/nginx/sbin/nginx -s reload #重启 增加h…

解决K8S集群设置污点后,污点不生效,下发应用的问题

问题:在集群中部署了三个daemonset,一开始加了容忍Toleration,后边去掉Toleration后,还是一直往边缘节点上部署应用,非常离谱 解决:删掉Toleration后,需要把annotations一起删掉,因为…

区块链媒体发稿:区块链媒体宣发常见问题解析

据统计,由于区块链应用和虚拟货币的兴起,越来越多媒体对区块链领域开展报导,特别是世界各国媒体宣发全是热火朝天。但是,随着推卸责任媒体宣发的五花八门,让很多人因而上当受骗,乃至伤害一大笔资产。身为投…

打破雇佣思想 云畅科技CIO曾颖博士浅析零雇工模式

作者简介 INTRO 曾 颖 工商管理博士 云畅科技高级合伙人、CIO 产业咨询&企业数字化转型落地专家 2018年,“零雇工”企业组织创新2018全球创新创业教育高峰论坛在西安举行,我当时作为上海沐新众创空间的导师和分会场“企业家如何创建零雇工…

6.pip简介,第三方库的安装

引言 使用过Visual Studio的小伙伴可能对npm不陌生,没错,pip与npm的功能是一样的。 首先要知道,Python这门语言拥有着丰富的标准库以及先辈们开发的各种功能强大的第三方库。而今天我们主要学习的呢就是关于Python中的包管理工具。它是Pytho…

模仿火星科技 基于cesium+ 贴地测量+可编辑

当您进入Cesium的编辑贴地测量世界,下面是一个详细的操作过程,帮助您顺利使用这些功能: 1. 创建提示窗: 启动Cesium应用,地图场景将打开,欢迎您进入编辑模式。在屏幕的一角,一个友好的提示窗将…

Java基础入门篇——While循环(十二)

目录 一、循环结构语句 二、while循环语句 三、do-while循环语句 四、break使用 一、循环结构语句 在实际生活中经常会将同一件事情重复做很多次。例如,在做眼保健操的第四节轮刮眼眶时,会重复刮眼眶的动作:打乒乓球时,会重复…

车云一体化系统基础理论

车云一体化系统基础理论 介绍目标正文 参考文档 介绍 最近在调研车云链路一体化的整套解决方案,涉及分布式消息队列(RocketMQ)、分布式存储(Doris)、离线数据处理(Spark)、用户行为日志分析&am…

华为OD真题--字符串加密

2023华为OD统一考试(AB卷)题库清单-带答案(持续更新)or2023年华为OD真题机考题库大全-带答案(持续更新) "给你一串未加密的字符串str,通过对字符串的每一个字母进行改变来实现加密&#xf…

maven配置settings文件,包含配置阿里云镜像,配置maven私服,配置私服密码

配置阿里云镜像 <!-- 多个相同 mirrorOf 的 mirror配置&#xff0c;会根据他们声明的顺序 决定优先级 --><!--阿里云仓库地址来源 see https://developer.aliyun.com/mvn/guide--><mirror><id>aliyunMaven01</id><name>aliyun maven</n…

vuejs 设计与实现 - 双端diff算法

我们介绍了简单 Diff 算法的实现原理。简单 Diff 算法利用虚拟节点的 key 属性&#xff0c;尽可能地复用 DOM元素&#xff0c;并通过移动 DOM的方式来完成更新&#xff0c;从而减少不断地创建和销毁 DOM 元素带来的性能开销。但是&#xff0c;简单 Diff 算法仍然存在很多缺陷&a…

【MFC】07.MFC第三大机制:消息映射-笔记

本专栏上两篇文章分别介绍了【MFC】05.MFC第一大机制&#xff1a;程序启动机制和【MFC】06.MFC第二大机制&#xff1a;窗口创建机制&#xff0c;这篇文章来为大家介绍MFC的第三大机制&#xff1a;消息映射 typfd要实现消息映射&#xff0c;必须满足的三个条件&#xff1a; 类必…

未来,运营的重要性大于产品?

微博上看到某产品大V的一个观点&#xff0c;说在未来&#xff0c;产品运营的重要性会大过产品经理&#xff0c;还挺认同的&#xff0c;谈谈我的想法。 这个观点的核心依据是&#xff0c;目前没有新的产品形态&#xff0c;各种产品解决方案都是标准化的&#xff0c;产品由开疆辟…

Java 面试题2023

Java core JVM 1、JVM内存模型 2、JVM运行时内存分配 3、如何确定当前对象是个垃圾 4、GCrooot 包括哪些? 5、JVM对象头包含哪些部分 6、GC算法有哪些 7、JVM中类的加载机制 8、分代收集算法 9、JDK1.8 和 1.7做了哪些优化 10、内存泄漏和内存溢出有什么区别 11、J…

告别传统人肉运维,实现360°可观测!奇点云数据存算引擎DataKun R2.0发布

近日&#xff0c;奇点云的数据云全系产品发布新一季更新。本文着重分享数据存算引擎DataKun、数据安全引擎DataBlack、指标工厂SimbaMetric、标签工厂SimbaTag的最新进展。 摘要&#xff1a; 数据存算引擎DataKun R2.0发布&#xff0c;在安全稳定、智能运维、自主可控等层面均…

深入理解Jdk5引入的Java泛型:类型安全与灵活性并存

深入理解Jdk5引入的Java泛型&#xff1a;类型安全与灵活性并存 ​ 在Java的中&#xff0c;有一个强大的工具&#xff0c;它可以让你在编写代码时既保持类型安全&#xff0c;又享受灵活性。**这个工具就是——泛型&#xff08;Generics&#xff09;。**本文将引导你深入了解Java…

ZZULIOJ 1191: 数星星(结构体专题),Java

ZZULIOJ 1191: 数星星&#xff08;结构体专题&#xff09;&#xff0c;Java 题目描述 一天&#xff0c;小明坐在院子里数星星&#xff0c;Gardon就出了个难题给她&#xff1a;Gardon在天空画出了一个矩形区域&#xff0c;让他输入矩形区域里有多少颗星星&#xff0c;仁慈的上…

如何简单的无人直播

环境搭建 ffmpeg安装&#xff0c;我这里用的是centos搭建的&#xff0c;其他平台可以自己百度 yum -y install wgetwget --no-check-certificate https://www.johnvansickle.com/ffmpeg/old-releases/ffmpeg-4.0.3-64bit-static.tar.xztar -xJf ffmpeg-4.0.3-64bit-static.ta…

袋鼠云数栈 DataOps 数据生产力实践,实现数据流程的自动化和规范化

袋鼠云产品团队在帮助企业进行数字化转型实践的过程中&#xff0c;发现很多企业在数据生产链路上都有着相同的问题。包括数据团队聚焦于业务需求短期内的快速交付&#xff0c;内部缺少自顶向下的数据生产管理制度&#xff0c;在数据标准、数据生产流程到研发规范的各个层面均存…