07 STL 简介

目录

  1. 什么是STL
  2. STL的版本
  3. STL的六大组件
  4. STL的重要性
  5. 如何学习STL
  6. STL的缺陷

1. 什么是STL

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)采用,可移植性好,可公开、修改甚至贩卖,从命名风格和编程风格看,阅读性非常高,后面部分主要是这个版本

3. STL的六大组件

在这里插入图片描述

4. STL的重要性

如今 STL 已完全被内置到支持 C++ 的编译器中,无需额外安装,这可能也是 STL 被广泛使用的原因之一。

5. 如何学习STL

《The C++ Standard Library》
分为三个境界

  • 第一境界: 熟用STL
  • 第二境界:了解泛型技术内涵与STL的学理乃至实作
  • 第三境界:扩充STL

6. STL的缺陷

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

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

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

相关文章

【Python笔记-设计模式】装饰器模式

一、说明 装饰器模式是一种结构型设计模式,旨在动态的给一个对象添加额外的职责。 (一) 解决问题 不改变原有对象结构的情况下,动态地给对象添加新的功能或职责,实现透明地对对象进行功能的扩展。 (二) 使用场景 如果用继承来扩展对象行…

互联网广告投放与IP地理位置定位

随着互联网的发展和普及,互联网广告投放成为各行业推广营销的重要方式之一。而结合IP地理位置定位技术,可以实现精准定向,提高广告投放的效果和精准度。IP数据云将探讨互联网广告投放与IP地理位置定位的关系,分析其优势和应用场景…

Window部署SkyWalking

SkyWalking mysql的驱动依赖 选择下载版本 v9.4 现在后解压缩目录结构 一、修改config目录文件 application.yml 修改1: selector: ${SW_STORAGE:h2} 修改后: selector: ${SW_STORAGE:mysql} 修改2:使用mysql数据库 mysql: properti…

鼠标右键助手专业版 MouseBoost PRO for Mac v3.3.6中文破解

MouseBoost Pro mac版是一款简单实用的鼠标右键助手专业版,MouseBoost Pro for Mac只要轻点你的鼠标右键,就可以激活你想要的各种功能,让你的工作效率大幅度提高,非常好用。 软件下载:MouseBoost PRO for Mac v3.3.6中…

Electron实战之环境搭建

工欲善其事必先利其器,在进行实战开发的时候,我们最终的步骤是搞好一个舒服的开发环境,目前支持 Vue 的 Electron 工程化工具主要有 electron-vue、Vue CLI Plugin Electron Builder、electron-vite。 接下来我们将分别介绍基于 Vue CLI Plu…

【算法与数据结构】417、LeetCode太平洋大西洋水流问题

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:题目要求雨水既能流向太平洋也能流向大西洋的网格。雨水流向取决于网格的高度。一个比较直接的方式是对…

《TCP/IP详解 卷一》第4章 地址解析协议ARP

目录 4.1 引言 4.2 一个例子 4.3 ARP缓存 4.4 ARP帧格式 4.5 ARP例子 4.6 ARP缓存超时 4.7 代理ARP 4.8 免费ARP和地址冲突检测 4.9 ARP命令 4.10 使用ARP设置嵌入式设备IPv4地址 4.11 与ARP相关攻击 4.12 总结 4.1 引言 地址解析: IPv4:AR…

社交媒体变革者:剖析Facebook对在线互动的贡献

随着数字化时代的蓬勃发展,社交媒体已经成为人们日常生活中不可或缺的一部分。在这个领域的发展中,Facebook作为先行者和领导者,对在线互动的演变和发展产生了深远的影响。本文将深入剖析Facebook在社交媒体领域的贡献,以及它对在…

MySql-DQL-条件查询

目录 条件查询修改数据 查询 姓名 为 Name10 的员工查询 id小于等于5 的员工信息查询 没有分配职位 的员工信息查询 有职位 的员工信息查询 密码不等于 password1 的员工信息查询 入职日期 在 2000-01-01 (包含) 到 2010-01-01(包含) 之间的员工信息查询 入职时间 在 2000-01-0…

跨区互联组网怎么做?SD-WAN专线可以实现吗?

在当今数字化时代,企业不断扩张,跨区域互联成为业务发展的必然需求。然而,跨区互联组网涉及到复杂的网络架构和连接,传统的网络方案往往难以满足高性能、高可靠性和低成本的要求。SD-WAN专线技术的出现,为跨区互联组网…

C++:Level2阶段测试

总结。 只要你看过我的文章,哪怕只是一半,一定能够过关! 准备好开始测试氻吗? 判断题,每题4分,共100分 1、Red Panda Dev C Maker【3.0自创黑客版】添加的头文件有Heike.h() 2、在…

Java 学习和实践笔记(19):this的使用方法

this用来指向当前对象的地址。 this的用法: 1)在普通方法中,this总是指向调用该方法的对象。在普通方法中,它是作为一种隐式参数一直就存在着(这句话的意思,就是其实在普通方法中,编译器一直就…

go使用trpc案例

1.go下载trpc go install trpc.group/trpc-go/trpc-cmdline/trpclatest 有报错的话尝试配置一些代理(选一个) go env -w GOPROXYhttps://goproxy.cn,direct go env -w GOPROXYhttps://goproxy.io,direct go env -w GOPROXYhttps://goproxy.baidu.com/…

Django学习笔记-forms使用

1.创建forms.py文件,导入包 from django import forms from django.forms import fields from django.forms import widgets2. 创建EmployeeForm,继承forms.Form 3.创建testform.html文件 4.urls.py添加路由 5.views中导入forms 创建testform,编写代码 1).如果请求方式为GET,…

go 1.18 不同目录package引用问题

go 1.18开始使用module了 不同的package在vs code中引用的话 需要先开启 是Go1.11版本之后 推出的版本管理工具 有点类似java的 maven工具 可以引入依赖使用 go env -w GO111MODULEon 先把这个打开 然后在创建的vs code工作目录下 执行 module gomdoule module 模块名 会生…

如何将新标注的三元组数据转换成unicoqe可以处理的格式

目录 问题描述: 问题解决: 问题描述: 原始的标注的三元组格式如下: 需要转换的格式如下: tips:有一个小的难点: 1. 针对多三元组的情况,需要额外考虑 2. 最后一个样本,也记得需要…

CentOS7 安装SSH

说实话,感觉CentOS有点难用。初始配置不是很友好,连自动获取IP地址都是关着的。当然,我这里本地用的是虚拟机。 开启获取IP 首先是获取IP地址,这是一些的起点。 首先使用ip addr 看看网卡地址和名称。我这边是ens33。然后打开自…

【踩坑专栏】主机ping虚拟机失败

我出现的问题finalshell连接超时,ping了一下发现ping都ping不通,于是发现问题所在。 最开始我是把虚拟机的网络设置改为桥接模式,问题解决了,但是这种模式的问题就是每次开机,ip都会改变,因此非常麻烦&…

C++从入门到精通 第七章(结构体)

写在前面: 本系列专栏主要介绍C的相关知识,思路以下面的参考链接教程为主,大部分笔记也出自该教程,笔者的原创部分主要在示例代码的注释部分。除了参考下面的链接教程以外,笔者还参考了其它的一些C教材(比…

SQLMap详解

SQLMap是一个自动化的SQL注入工具,其主要功能是扫描、发现并利用给定 URL的 SQL注入漏洞,内置了很多绕过插件,支持的数据库是MySQL、Oracle、 PostgreSQL、Microsoft SQL Server、Microsoft Access、IBM DB2、SQLite、 Firebird、Sybase和SAP…