【C++】探索C++的STL世界:初识标准模板库

本文介绍了C++STL(标准模板库),包括其历史、六大组件(容器、算法、迭代器、仿函数、配接器和配置器)以及它们之间的交互关系。STL提供高效的数据结构和算法,简化C++编程。
摘要由CSDN通过智能技术生成

​​在这里插入图片描述

🌱博客主页:青竹雾色间
😘博客制作不易欢迎各位👍点赞+⭐收藏+➕关注
在这里插入图片描述
✨人生如寄,多忧何为 ✨


一、初识STL

1.1 STL概论

STL(Standard Template Library)是C++标准库的一部分,提供了一系列通用的模板类和函数,用于实现常见的数据结构和算法。它的设计目标是提供高效、可靠、易用的工具,使C++程序员能够更容易地开发复杂的软件系统。

1.1.1 STL历史

STL最初由Alexander Stepanov和Meng Lee于20世纪90年代初开发,并在1994年首次发布。STL最初是作为C++标准库的一部分,但后来也被移植到其他编程语言中,如Java和Python。STL的设计受到了泛型编程和抽象数据类型理论的影响,旨在提供一种灵活、高效的编程范式。

STL的版本

  • 原始版本
    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)采用,可移植性好,可公开、修改甚至贩卖,从命名风格和编程风格上看,阅读性非常高。

1.1.2 STL与C++标准库

虽然STL是C++标准库的一部分,但它并不是C++标准的正式一部分。C++标准库包含了STL以及其他一些模块,如输入输出流、字符串处理等。STL通常被视为C++标准库中最重要和最有用的部分之一,因为它提供了丰富的数据结构和算法,可以大大简化C++程序的开发过程。

二、STL六大组件

STL主要由以下六大组件组成:
在这里插入图片描述

2.1容器(Container)

容器是STL中最基本的组件之一,用于存储和管理元素集合。STL提供了多种容器,包括:

  • 序列容器:向量(vector)、链表(list)、双端队列(deque)
  • 关联容器:集合(set)、多重集合(multiset)、映射(map)、多重映射(multimap)
  • 适配器容器:栈(stack)、队列(queue)、优先队列(priority_queue)

2.2算法(Algorithm)

算法是STL的另一个重要组件,提供了大量的通用算法,包括:

  • 排序算法:sort、stable_sort、partial_sort等
  • 查找算法:find、binary_search、lower_bound等
  • 变序算法:reverse、rotate、random_shuffle等
  • 数值算法:accumulate、inner_product、partial_sum等

2.3 迭代器(Iterator)

迭代器是STL的核心概念之一,提供了一种统一的访问容器元素的方法。STL中的迭代器分为五种类型:

  • 输入迭代器(Input Iterator)
  • 输出迭代器(Output Iterator)
  • 前向迭代器(Forward Iterator)
  • 双向迭代器(Bidirectional Iterator)
  • 随机访问迭代器(Random Access Iterator)

2.4仿函数(Functor)

仿函数是一种可调用的对象,类似于函数指针,可以在算法中使用。STL中的函数对象用于指定特定的操作或比较规则,包括:

  • 一元仿函数:接受一个参数
  • 二元仿函数:接受两个参数
  • 自定义仿函数:用户可以根据需要定义自己的仿函数

2.5配接器(Adapter)

配接器是一种特殊的容器,用于在不同的容器之间进行转换或包装。STL提供了多种适配器,如栈适配器(stack)、队列适配器(queue)和优先队列适配器(priority_queue),它们可以通过不同的容器实现相同的功能接口。

2.6配置器(Allocator)

配置器用于控制内存分配和释放的过程,可以在一定程度上优化内存管理效率。STL中的配置器允许用户自定义内存管理策略,满足特定的需求。

STL 六大组件的交互关系

在这里插入图片描述

Container 通过 Allocator取得数据储存空间,Algorithm通过Iterator存取Container内容,Functor可以协助Algorithm完成不同的策略变化,Adapter可以修饰或者套接Functor


在这里插入图片描述

  • 20
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青竹雾色间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值