初识STL

发布于:2025-08-13 ⋅ 阅读:(25) ⋅ 点赞:(0)

一 、STL的诞生

        在C++发展早期,程序员在不同的项目中需要反复编写相似的数据结构和算法。重复开发带来以下问题:

        代码冗余:每个项目都要重新实现基本数据结构和算法

        维护困难:不同人编写的代码风格不一致,难以维护

        效率低下:不同实现可能导致性能不稳定,难以优化

为了解决这些问题,1994年由Alexander Stepanov领导的团队开发了STL。

二、STL基本概念

  • STL(标准模板库,Standard Template Library)
  • 由多个模块组成,包括容器(Containers)、算法(Algorithms)和迭代器(Iterators),加上一些额外的工具
  • 容器算法之间通过迭代器进行无缝衔接
  • STL几乎所有的代码都采用了模板类或者模板函数

三、 STL核心组件

        STL主要由六大部分组成:容器算法迭代器适配器函数对象配置器

        1.容器(Containers)

                提供多种数据结构,方便存储和管理数据。常见容器包括:

容器类型 特点 常见容器
序列式容器 按照顺序存储数据 vector,deque,list,array
关联式容器 以键值对存储数据,自动排序 set,map,multiset,multimap
无序容器 使用哈希表存储数据,查找快 unordered_set,unordered_map

        2. 算法(Algorithms)

        提供大量常见算法,如排序、查找、修改等,使用时结合迭代器。
常见算法:

  • 修改类:fill()、replace()、copy()
  • 非修改类:find()、count()
  • 排序类:sort()、stable_sort()
  • 数值类:accumulate()(求和)、inner_produce()(内积)

        3. 迭代器(Iterators)

        用于遍历容器中的元素,类似于指针,但更灵活,适用于STL容器。

迭代器类别 适用容器 功能
输入迭代器 istream_iterator 只能读取
输出迭代器 ostream_iterator 只能写入
前向迭代器 forward_list 只能前进
双向迭代器 list,set,map 可前进和后退
随机访问迭代器 vector,deque,array 可随机访问

        4. 适配器(Adapters)

        用于改变容器、迭代器或函数行为的工具。例如:                                                        

  • 容器适配器(stackqueuepriority_queue)
  • 迭代器适配器(reverse_iterator)
  • 函数适配器(bind()mem_fn())

        5、函数对象(Functors 仿函数)

        是重载的类,可以像函数一样被调用。可作为算法的某种策略。

        6、适配器(Allocators)

        STL提供的内存管理机制,用于分配和释放内存。

四、 STL的特点

  • 泛型编程
  • 高效
  • 模块化
  • 代码复用

网站公告

今日签到

点亮在社区的每一天
去签到