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

相关推荐
zh路西法18 小时前
基于yaml-cpp的C++参数服务器设计2:多级参数配置
linux·服务器·c++
啦啦啦啦啦zzzz18 小时前
算法总结(双指针)
c++·算法·双指针
wzg19690226wzg18 小时前
rust 学习 泛型
开发语言·学习·rust
techdashen18 小时前
Rust 基础设施团队 2025 Q4 回顾与 2026 Q1 计划
开发语言·后端·rust
红宝村村长18 小时前
torch.autograd.Function.apply()
开发语言·python
AI科技星18 小时前
《数术工坊:非欧射影录》类型:硬核光影·几何本源
c语言·开发语言·网络·量子计算·agi
何以解忧,唯有..18 小时前
Python 中的继承机制:从基础到高级用法详解
java·开发语言·python
QiLinkOS18 小时前
极客与商业思维的融合实践(1)
c语言·数据库·c++·人工智能·算法·开源协议
坚果派·白晓明19 小时前
鸿蒙PC】libuv适配:AtomCode Skills一站式指南
c语言·c++·华为·ai编程·harmonyos·atomcode