STL:让C++代码量砍半的『禁忌魔法』?

前言

本篇博客将详细介绍C++的STL

💖 个人主页熬夜写代码的小蔡

🖥 文章专栏:C++

若有问题 评论区见

🎉欢迎大家点赞👍收藏⭐文章 ​

d6b44a6e06316a12d6dec7f29fc29d7b.gif

ca618b2856ce45c78a02cc2a85b3b0f6.gif

一:STL简介

STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的
组件库,而且是一个包罗数据结构与算法的软件框架

二:STL的六大组件

2.1容器

  • 作用:存储和管理数据集合,提供不同的数据组织方式。
  • 分类
    • 序列容器:元素按线性顺序排列(如 vectorlistdeque)。
    • 关联容器:通过键(Key)快速查找数据(如 setmapmultisetmultimap)。
    • 无序关联容器(C++11):基于哈希表实现(如 unordered_mapunordered_set)。
    • 容器适配器:封装现有容器提供特定接口(如 stackqueuepriority_queue)。

2.2算法 

  • 作用:对容器中的数据进行操作(如排序、查找、修改)。
  • 特点:泛型设计,通过迭代器与容器解耦。

2.3迭代器 

  • 作用:提供一种统一的方式遍历容器中的元素。
  • 分类(按功能递增):
    • 输入/输出迭代器:单向遍历(如 istream_iteratorostream_iterator)。
    • 前向迭代器:单向但可多次遍历(如 forward_list 的迭代器)。
    • 双向迭代器:支持双向遍历(如 list 的迭代器)。
    • 随机访问迭代器:支持直接跳跃访问(如 vectordeque 的迭代器)。

2.4空间配置器 

  1. 作用:管理容器的内存分配与释放,通常默认使用 std::allocator
  2. 高级用法:可自定义分配器优化内存管理(如内存池)。

2.5 配接器

  1. 作用:对现有组件接口进行改造,提供新功能。
  2. 常见类型
    • 函数适配器(如 bind 绑定参数,C++11 后推荐用 std::bind 或 Lambda)。
    • 迭代器适配器(如 reverse_iterator 反向遍历)。
    • 容器适配器(如 stack 基于 deque 或 list 实现)。

2.6仿函数

如:greater,less

三.STL的设计原则与特性

  1. 泛型编程(Generic Programming)

    • 通过模板(Templates)实现与数据类型无关的代码。
    • 示例:vector<int> 和 vector<string> 使用同一套代码逻辑。
  2. 时间复杂度保证

    • 不同容器/算法的性能有明确约定(如 map 查找为 O(log n),unordered_map 为平均 O(1))。
  3. 迭代器解耦容器与算法

    • 算法通过迭代器操作容器,无需知道容器内部结构。

 四.常用容器的对比与比较

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值