STL简介

文章目录

  • STL简介
    • 什么是STL
    • STL版本
    • STL的六大组件
    • 如何学习STL
    • STL的缺陷

什么是STL

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

STL版本

STL的版本很多,常见的有HP STL、PJ STL、 SGI STL等

  • HP STL

HP STL是所有其它STL实现版本的根源。它是STL之父Alexander Stepanov在惠普的Palo Alto实验室工作时,和Meng Lee共同完成的,是第一个STL的实现版本.这个STL是开放源码的,所以它允许任何人免费使用、复制、修改、发布和销售该软件和相关文档,前提是必须在所有相关文件中加入HP STL的版本信息和授权信息。现在已经很少直接使用这个版本的STL了。

  • SGI STL

STL之父Alexander Stepanov离开HP之后就去了SGI(Silicon Graphics Computer System, Inc),然后和Matt Austern这些STL大牛一起搞了SGI STL。它也是HP STL的一个继承版本。它属于开放源码,因此你可以修改和销售它。SGI STL被GCC(linux下的C++编译器)所采用,你可以在GCC的Include子目录下找到所有头文件(比如:C:/cygnus/cygwin-b20/include/g++/include)。由于GCC对C++语言标准的支持很好,SGI STL在linux平台上的性能相当出色。此外,其源代码的可读性也很好。可以从如下网站得到更详细的情况介绍:http://www.sgi.com,可以免费下载其源代码

  • PJ STL

Visual C++里的STL,作者P.J. Plauger,所以一般也说pj stl。P. J. Plauger STL属于个人作品,由P. J. Plauger本人实现,是HP STL的一个继承版本,因此在其所有头文件中都含有HP STL的相关声明,同时还有P. J. Plauger本人的版权声明。其实这份STL是他公司的产品,不过他跟MS的关系实在是好得有点古怪,所以虽然Plauger水平极高,很多人却看他不惯。当然,据说Plauger除了钱以外也看不惯其他东西,所以Plauger虽然称不上声名狼藉,也没有什么好名声。因为VC 6.0在模板处理方面过于白痴(7.0/7.1以后就没事了,毕竟Lippman出马),所以pj stl实在写得辛苦,也难为Plauger了(当然有money作动力,恐怕也无所谓“难为”)

STL的六大组件

如何学习STL

  • 首先,我们得学会使用STL学会各种容器的使用,熟悉各种操作,熟练的使用STL能大大提高我们的开发效率。
  • 在使用的过程中,难免会遇到一些错误,我们难以去解决这些STL的使用错误,为了更好的使用STL,我们得了解它的底层实现。这样才能更好的使用STL。
  • 在熟练使用和了解它的底层以后,更深的方向,就是根据我们的需求,对STL进行扩充,实现更贴合我们自己使用的功能。

STL的缺陷

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

【C++】STL(标准模板库)简介相关推荐

  1. C++ STL标准模板库简介

    文章目录 1. 什么是STL? 2. STL的优势 3. STL版本? 4. STL的六大组件 5. 学习建议 6. 为什么需要迭代器? 7. 自己实现迭代器iterator 8. STL中的5种迭代 ...

  2. 19.3 C++STL标准模板库大局观-容器的说明和简单应用例续

    19.1 C++STL标准模板库大局观-STL总述.发展史.组成与数据结构谈 19.2 C++STL标准模板库大局观-容器分类与array.vector容器精解 19.3 C++STL标准模板库大局观 ...

  3. 19.1 C++STL标准模板库大局观-STL总述、发展史、组成与数据结构谈

    19.1 C++STL标准模板库大局观-STL总述.发展史.组成与数据结构谈 19.2 C++STL标准模板库大局观-容器分类与array.vector容器精解 19.3 C++STL标准模板库大局观 ...

  4. 【跟学C++】C++STL标准模板库——算法详细整理(下)(Study18)

    文章目录 1.简介 2.STL算法分类及常用函数 2.2.变序算法(二) 2.2.1 替换算法(2个) 2.2.2 排序算法(6个) 2.2.3 分区算法(4个) 2.2.4 可用于排序容器的算法(3 ...

  5. C++提高编程----STL标准模板库-常用容器

    STL标准模板库(Standard Template Library)-常用容器 C++的,面向对象和泛型编程,目的就是提高代码的复用性:为了建立数据结构和算法的统一标准,诞生了STL 一.STL初识 ...

  6. STL(标准模板库)理论基础与容器

    10.1 STL(标准模板库)理论基础 10.1.1基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被 ...

  7. 【跟学C++】C++STL标准模板库——算法详细整理(中)(Study18)

    文章目录 1.简介 2.STL算法分类及常用函数 2.1.变序算法(一) 2.2.1 初始化算法(2个) 2.2.2 修改算法(2个) 2.2.3 复制算法(6个) 2.2.4 删除算法(6个) 3. ...

  8. 补8-5日复习内容 STL 标准模板库的容器

    //有关 STL 标准模板库的函数 /* string 的 */ /* #include <iostream> #include <string> #include <w ...

  9. stl标准模板库_C ++标准模板库(STL)中的array :: fill()

    stl标准模板库 fill() is a member function of "array container", which sets a given value to all ...

最新文章

  1. 省钱之道--图解域域树域林根域的含义
  2. 通用多表分页存储过程
  3. 【已解决】nimfa 环境的详细搭建过程 + 各种依赖库的安装、下载、调试
  4. 服务器t4卡在哪个位置,英特尔(Intel )X710-T4融合网络适配器4口万兆X710T4服务器网卡...
  5. C++利用SOCKET传送文件
  6. python字符串用法_笔记:python字符串的使用
  7. Linux系统基础知识
  8. 谷歌弃用 APK 格式!替代品 AAB 有何优势?
  9. 【CF】304 E. Soldier and Traveling
  10. python抓包模块
  11. Oracle创建约束语句,约束 comment 创建语句
  12. SQL语言的3种分类
  13. 黑苹果 - 图形卡 显示器 7MB
  14. 一图学会配置微信云端店员监控收款回调
  15. 网吧安内线 黑客遥控偷Q币出售牟利
  16. (转)没有自制力的人有什么资格谈努力?
  17. [转]下载安装IDM Integration Module和其使用方法
  18. python手机编程调试_在Linux下调试Python代码的各种方法
  19. JavaScript中逻辑运算符的优先级
  20. 努力前端【LeetCode-10】448. 找到所有数组中消失的数字 442. 数组中重复的数据(中等) 41. 缺失的第一个正数(困难) [鸽笼原理,数组,Map,类似No.645]

热门文章

  1. Appium在Android无法显示界面处理方式
  2. Mac系统Jython安装与使用
  3. MSYS2开发环境搭建
  4. 神舟 mini pc Android,轻巧小机身 神舟mini PC/PCS明日爆款
  5. 了解一下高速动态称重产品
  6. 文件管理之文件共享与文件保护
  7. matlab读jpg有三个通道,图像为“灰度图像”
  8. java crc-16校验位 xmodem x16+x12+x5+1(0x11021)实现
  9. 计算机cdef盘无法显示,科技常识:如何解决电脑CDEF盘都打不开出现ldq
  10. 163邮箱不需要手机号,群发邮件工具,邮件营销工具