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这样会生成多份代码,当然这是模板语法本身导致

相关推荐
wangjinjin18018 分钟前
Python Excel 文件处理:openpyxl 与 pandas 库完全指南
开发语言·python
愚润求学18 分钟前
【C++】类型转换
开发语言·c++
@我漫长的孤独流浪26 分钟前
数据结构测试模拟题(4)
数据结构·c++·算法
斯奕sky_small-BAD31 分钟前
C++ if语句完全指南:从基础到工程实践
java·开发语言·php
Humbunklung40 分钟前
Rust Floem UI 框架使用简介
开发语言·ui·rust
csdnzzt1 小时前
从内存角度透视现代C++关键特性
c++
jie188945758661 小时前
C++ 中的 const 知识点详解,c++和c语言区别
java·c语言·c++
网安INF1 小时前
RSA加密算法:非对称密码学的基石
java·开发语言·密码学
明月*清风1 小时前
c++ —— 内存管理
开发语言·c++
蔡蓝1 小时前
设计模式-观察着模式
java·开发语言·设计模式