标准模板库和容器类

STL(Standard Templete Library)标准模板库

STL提供了一组表示容器、迭代器、函数对象和算法的模板。容器是一个与数组类似的单元,可以存储若干个值,STL容器是同质的,即存储的值的类型相同;算法是完成特定任务的处方;迭代器能够用来遍历容器的对象,是广义指针;函数对象是类似于函数的对象,可以是类对象或函数指针。STL使得能够构造各种容器和执行各种操作。

泛型编程(Generic Programming)

STL是一种泛型编程。面向对象编程关注的是编程的数据方面,而泛型编程关注的是算法。
泛型编程旨在编写独立于数据类型的代码。

迭代器

迭代器使算法独立于使用的容器类型。模板使得算法独立于存储的数据类型。
总结一下STL方法:首先是处理容器的算法,应尽可能用通用的术语来表达算法,使之独立于数据类型和容器类型。为使通用算法能够适用于具体情况,应定义能够满足需求的迭代器,并把要求加到容器设计上。即基于算法要求,设计基本迭代器的特征和容器特征。

迭代器类型
迭代器层次结构:输入迭代器、输出迭代器、正向迭代器、双向迭代器、随机访问迭代器。
在这里插入图片描述

容器

容器概念是具有名称(如容器、序列容器、关联容器)的通用类别;容器类型是可用于创建具体容器对象的模板。
以前的11个容器类型分别为:deque、list、queue、priority_queue、stack、vector、map、multimap、set、multiset、bitset;C++新增了forward_list、unordered_map、unordered_multimap、unorder_set、unordered_multiset,且不将biset视为容器,而将其视为一种独立的类别。
在这里插入图片描述
编译时间为0,固定时间复杂度为 O ( 1 ) O(1) O(1),线性时间复杂度为 O ( n ) O(n) O(n)

序列容器

7种STL的序列容器:deque、list、queue、priority_queue、stack、vector、forward_list。

在这里插入图片描述
在这里插入图片描述

关联容器

STL提供了四种关联容器:map、multimap、set、multiset。基于树结构。

无序关联容器

C++11提供了unordered_map、unordered_multimap、unorder_set、unordered_multiset四种无序关联容器。基于哈希表结构。

函数对象(函数符,functor)

在这里插入图片描述

算法

STL将算法库分为四组:

  1. 非修改式序列操作
  2. 修改式序列操作
  3. 排序和相关操作
  4. 通用数字运算
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值