C++STL(逐渐更新中)

1.容器(Containers)

  • 序列容器
    • vector:动态数组,支持快速随机访问,在尾部插入和删除元素效率高,自动管理内存,可动态增长或缩小。
    • list:双向链表,在任何位置插入和删除元素都很快,但不支持随机访问。
    • deque:双端队列,兼具 vector 和 list 的部分特性,可在两端快速插入和删除元素,也支持随机访问。
    • 三者对比
  • 关联容器
    • map:键值对集合,按键有序存储,可快速根据键查找、插入和删除元素,常用于实现字典、映射等功能。
    • set:元素唯一的集合,内部按元素值有序存储,常用于快速判断元素是否存在。
    • multimap:类似 map,但允许一个键对应多个值。
    • multiset:类似 set,但允许元素重复。
  • 无序容器(C++11 引入)
    • unordered_map:基于哈希表实现的键值对集合,元素无序存储,查找、插入和删除操作平均时间复杂度为常数级别。
    • unordered_set:基于哈希表实现的集合,元素无序且唯一,操作效率与 unordered_map 类似。
    • unordered_multimap:类似 unordered_map,但允许一个键对应多个值。
    • unordered_multiset:类似 unordered_set,但允许元素重复。

2.算法(Algorithms)

  • 遍历算法:如for_each,可对容器中的每个元素执行指定操作。
  • 查找算法:例如find用于在容器中查找特定元素,binary_search用于在有序容器中进行二分查找。
  • 排序算法sort可对容器中的元素进行排序,stable_sort在排序时能保持相等元素的相对顺序不变。
  • 数值算法:如accumulate用于计算容器中元素的总和,inner_product用于计算两个容器的内积。

3.迭代器(Iterators)

  • 输入迭代器:提供对数据的只读访问,只能向前遍历容器,支持++操作。
  • 输出迭代器:用于向容器中写入数据,只能向前移动,支持++操作。
  • 前向迭代器:既能读又能写,可多次读取同一个元素,支持++操作。
  • 双向迭代器:在前向迭代器的基础上,支持--操作,可双向遍历容器。
  • 随机访问迭代器:支持随机访问容器中的元素,除了++--操作外,还支持+-+=-=等操作,能像指针一样随机访问元素。

4.函数对象(Function Objects)

  • 定义:也叫仿函数,是一种重载了函数调用运算符()的类对象,可像函数一样被调用。
  • 用途:可作为算法的参数,用于自定义算法的行为。例如greater是一个函数对象,用于实现大于比较操作,可传递给排序算法来实现降序排序。

5.分配器(Allocators)

  • 作用:负责为容器分配和管理内存,可自定义分配器来实现特定的内存管理策略,如使用自定义的内存池。
  • 示例:默认情况下,容器使用std::allocator来分配内存。但在某些特殊场景下,如需要提高内存分配效率或管理特定类型的内存资源时,可创建自定义分配器。

6.适配器概述

适配器是一种特殊的概念,它可以对现有的 STL 组件进行修改和包装,以满足特定的使用需求,让原本不兼容的接口能够协同工作,就像是电子设备中的转接器一样,起到转换和适配的作用

你可能感兴趣的:(c++,开发语言)