【C++】STL简介

简介: 【C++】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缺陷

  1. STL库的更新很慢;
  2. STL没有支持线程安全,并发环境下需要自己加锁。且锁的粒度是比较大的;
  3. STL极度的追求效率,导致内部比较复杂;
  4. STL的使用会有代码膨胀的问题,这是模板语法本身导致的。
目录
相关文章
|
4天前
|
设计模式 算法 Java
【c++】STL之stack和queue详解
【c++】STL之stack和queue详解
6 1
|
10天前
|
存储 算法 C++
【C++高阶】探索STL的瑰宝 map与set:高效数据结构的奥秘与技巧
【C++高阶】探索STL的瑰宝 map与set:高效数据结构的奥秘与技巧
17 0
|
12天前
|
存储 算法 数据处理
【C++】STL简介
**STL是C++标准库的关键部分,源于Alexander Stepanov的泛型编程研究。它提供了数据结构(如vector、list)和算法,是高效、通用的软件框架。STL始于惠普,后由SGI发展,现已成为C++1998标准的一部分并不断进化。它包括容器、迭代器、算法、仿函数、配接器和分配器六大组件,带来高效性、通用性和可扩展性,但也存在性能开销和学习难度。学习STL涉及理解底层数据结构、用法、实现和实践。推荐[cplusplus.com](https://cplusplus.com)作为学习资源。**
|
12天前
|
存储 算法 程序员
C++基础知识(八:STL标准库(Vectors和list))
C++ STL (Standard Template Library标准模板库) 是通用类模板和算法的集合,它提供给程序员一些标准的数据结构的实现如 queues(队列), lists(链表), 和 stacks(栈)等. STL容器的提供是为了让开发者可以更高效率的去开发,同时我们应该也需要知道他们的底层实现,这样在出现错误的时候我们才知道一些原因,才可以更好的去解决问题。
|
12天前
|
算法 前端开发 C++
C++基础知识(八:STL标准库 deque )
deque在C++的STL(Standard Template Library)中是一个非常强大的容器,它的全称是“Double-Ended Queue”,即双端队列。deque结合了数组和链表的优点,提供了在两端进行高效插入和删除操作的能力,同时保持了随机访问的特性。
|
12天前
|
存储 C++ 索引
C++基础知识(八:STL标准库 Map和multimap )
C++ 标准模板库(STL)中的 map 容器是一种非常有用的关联容器,用于存储键值对(key-value pairs)。在 map 中,每个元素都由一个键和一个值组成,其中键是唯一的,而值则可以重复。
|
12天前
|
存储 算法 数据处理
|
14天前
|
存储 算法 C语言
【C++】详解STL的适配器容器之一:优先级队列 priority_queue
【C++】详解STL的适配器容器之一:优先级队列 priority_queue
|
14天前
|
设计模式 存储 缓存
【C++】详解STL容器之一的deque和适配器stack,queue
【C++】详解STL容器之一的deque和适配器stack,queue
|
14天前
|
存储 算法 C++
【C++】详解STL容器之一的 vector
【C++】详解STL容器之一的 vector