C++ STL简介

目录

一、STL的概念

二、STL的六大组件

三、STL的缺陷


一、STL的概念

STL 是指标准模板库(Standard Template Library)的缩写。它是 C++ 的一个标准库,提供了许多通用的模板类和函数,用于实现常用的数据结构和算法。STL 是 C++ 中广泛使用的一个库,被认为是 C++ 的核心之一。

二、STL的六大组件

C++ STL简介_第1张图片

  1. 容器(Containers):包括向量(vector)、列表(list)、双端队列(deque)、栈(stack)、队列(queue)、优先队列(priority_queue)、集合(set)、映射(map)等,用于存储和管理数据。

  2. 迭代器(Iterators):提供了一种访问容器中元素的通用方式,包括输入迭代器、输出迭代器、前向迭代器、双向迭代器和随机访问迭代器。

  3. 算法(Algorithms):包括排序、查找、遍历、修改、复制、合并、反转、旋转等常用算法。

  4. 仿函数(函数对象)(Functors):是可调用对象,可以像函数一样使用,用于定制算法的行为。

  5. 空间配置器(Allocator):用于管理动态内存的分配和释放。

  6. 适配器(Adapters):用于将容器或函数对象转换成其他类型,以适应不同的需求。包括容器适配器(如栈和队列的适配器)、迭代器适配器(如反向迭代器和插入迭代器)和函数适配器(如绑定器和取反器)。

C++ STL简介_第2张图片

 

三、STL的缺陷

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

你可能感兴趣的:(C++从入门到入土,c++)