【C++】STL简介
文章目录
- 什么是STL
- STL版本
- 原始版本(HP版本)
- P.J.版本
- RW版本
- SGI版本
- STL六大组件
- 容器
- 算法
- 仿函数
- 空间配置器
- 迭代器
- 配接器
- STL缺陷
什么是STL
STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,还是一个包罗数据结构与算法的软件框架。
俗话说的好,不懂STL,不要说你会C++。C++中拥有许多底层的数据结构以及算法,有了STL就不需要自己造轮子了,不得不承认我们大多数人都喜欢自己造轮子,总觉得自己造的轮子会与众不同,实际上可能还比不上别人提供的轮子。
STL版本
原始版本(HP版本)
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六大组件
容器
名字非常高大上,实际上就是数据结构,比如:string、vector、list、deque、map等。
算法
常见的有find、swap、reverse、sort、merge等。
仿函数
greater、less……
空间配置器
一些频繁需要访问内存空间的容器由空间配置器在内存池上分配内存,内存池的内存也是来源于堆上的。
迭代器
iterator、const_iterator、reverse_iterator、const_reverse_iterator。
配接器
stack、queue、priority_queue。
STL缺陷
- STL库的更新很慢;
- STL没有支持线程安全,并发环境下需要自己加锁。且锁的粒度是比较大的;
- STL极度的追求效率,导致内部比较复杂;
- STL的使用会有代码膨胀的问题,这是模板语法本身导致的。
【C++】STL简介相关推荐
- C++标准库与STL简介
文章目录 1 C++标准库 1.1 C++标准库简介 2 STL简介 2.1 STL介绍 2.2 容器简介 1 C++标准库 重复发明轮子并不是一件有创造性的事,站在巨人的肩膀上解决问题会更加有效! ...
- C++ STL简介(转)
一.STL简介 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.它是由Alexander Stepanov.Meng Lee和David R ...
- STL源码剖析(一)STL简介
STL源码剖析(一)STL简介 文章目录 STL源码剖析(一)STL简介 一.STL概述 二.STL六大组件 2.1 容器(containers) 2.2 算法(algorithms) 2.3 迭代器 ...
- ACM入门及STL简介(转)
第一章 新手入门 1. ACM国际大学生程序设计竞赛简介 1) 背景与历史 1970年在美国TexasA&M大学举办了首次区域竞赛,从而拉开了国际大学生程序设计竞赛的序幕. ...
- ACM入门及STL简介
1. ACM 国际大学生程序设计竞赛简介 1) 背景与历史 1970 年在美国TexasA&M 大学举办了首次区域竞赛,从而拉开了国际大学生程序设计竞赛的序幕.1977 ...
- 学习->C++篇五:模板与STL简介
目录 1. 函数模板 2. 类模板 3.模板的语法 (1)非类型模板参数 (2) 模板的特化 (3)模板的分离编译 4.STL简介 1. 函数模板 模板是泛型编程的基础,一个模板就是一个创建类或函 ...
- 【C++】STL简介 -- string 的使用及其模拟实现
文章目录 一.STL 简介 1.什么是 STL 2.STL 的版本 3.STL 的六大组件 4.STL 的重要性 5.如何学习 STL 二.string 类的使用 1.什么是 string 2.VS ...
- 【C++】模板初阶STL简介
今天,你内卷了吗? 文章目录 一.泛型编程 二.函数模板(显示实例化和隐式实例化) 1.函数模板格式 2.单参数模板 3.多参数模板 4.模板参数的匹配原则 三.类模板(没有推演的时机,统一显示实例化 ...
- STL简介string的使用及其模拟实现
文章目录 一.STL简介 1.什么是STL 2.STL的版本 3.STL的六大组件 4.STL的重要性 5.如何学习STL 二.标准库中的string类 1.string类 2.string类的常用接 ...
- 学习笔记:C++初阶【C++入门、类和对象、C/C++内存管理、模板初阶、STL简介、string、vector、list、stack、queueu、模板进阶、C++的IO流】
文章目录 前言 一.C++入门 1. C++关键字 2.命名空间 2.1 C语言缺点之一,没办法很好地解决命名冲突问题 2.2 C++提出了一个新语法--命名空间 2.2.1 命名空间概念 2.2.2 ...
最新文章
- PDF文件加密有什么方法?如何给PDF文件加密
- 在zabbix web上进行监控主机配置
- python变量分类_Python 入门系列 —— 5. 三大变量类型介绍
- CV Code | 本周计算机视觉新出开源代码汇总(含医学图像分割、神经架构搜索、姿态迁移、超分辨率等)...
- bz2解压命令_Java压缩技术 - tar.bz2解压缩
- python机器学习库keras——CNN卷积神经网络识别手写体
- windows | RDPWrap 远程桌面登录增强工具,长期提供多版本 rdpwrap.ini配置文件 [可灵活设置多人同时登录、一键改变配置]
- 在线多功能工具箱php源码
- 云计算以及虚拟化的简单介绍
- Future FMCG2021 ,爱莫受邀智话实体零售数字新发展
- 高校学生快递包装回收行为意愿分析
- 孤独的灵魂该去何处安家
- 最新初中级前端面试题合集一,你确定不看一看嘛
- 解决jmeter5.4.3在高分辨率下的显示问题
- Matter协议与Zigbee
- 很漂亮实用的jQuery实例123个
- 好的提问和寻找答案的网站(会时常更新)
- LOL中那些不可错过的精彩对局!!!
- 使用递归函数计算1到n之和
- 计算机显卡怎样安装方法,独立显卡安装简易教程
热门文章
- 微信小程序绑定数据页面不显示并且页面没有报错
- Excel如何快速填写二维表
- c# 调用restful json_SSM实现RESTFul风格的CURD操作
- .NetCore之AutoMapper进阶篇
- 计算机配置ppt制作,做ppt.ps要用什么样的配置的手提电脑做
- Windows 10 控制面板 (Control Panel)
- Intel处理器分类规则
- 我改回iPhone的13个理由
- Python视觉深度学习系列教程 第一卷 第21章 案例:使用CNN破解验证码
- UOJ#310 【UNR #2】黎明前的巧克力:FWT