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

相关推荐
William一直在路上几秒前
Python数据类型转换详解:从基础到实践
开发语言·python
看到我,请让我去学习38 分钟前
Qt— 布局综合项目(Splitter,Stacked,Dock)
开发语言·qt
GUET_一路向前1 小时前
【C语言防御性编程】if条件常量在前,变量在后
c语言·开发语言·if-else·防御性编程
曳渔1 小时前
UDP/TCP套接字编程简单实战指南
java·开发语言·网络·网络协议·tcp/ip·udp
楼田莉子1 小时前
C++算法题目分享:二叉搜索树相关的习题
数据结构·c++·学习·算法·leetcode·面试
三千道应用题1 小时前
WPF&C#超市管理系统(6)订单详情、顾客注册、商品销售排行查询和库存提示、LiveChat报表
开发语言·c#·wpf
hqxstudying1 小时前
JAVA项目中邮件发送功能
java·开发语言·python·邮件
咪咪渝粮1 小时前
JavaScript 中constructor 属性的指向异常问题
开发语言·javascript
最初的↘那颗心1 小时前
Java HashMap深度解析:原理、实现与最佳实践
java·开发语言·面试·hashmap·八股文
大锦终2 小时前
【算法】模拟专题
c++·算法