大致介绍STL

什么是STL?

1.首先STL是C++中的标准模板库(standard template library)
2.STL实际上就是对常见的数据结构(线性表(顺序表、链表)、栈和队列、二叉树、哈希)以模板的方式进行封装,目的就是替用户组织数据,里面还增加了一些非常灵活的通用算法,主要是对数据进行操作的sort/reverse…
注意:灵活和通用
通用:1.与数据类型无关; 2.与数据结构无关,任意类型数据结构组织的数据都可以进行操作(迭代器)

//例:
template<class iterator,class T>
iterator find(iterator first,iterator last,const T&data)
{
	while(first !=last)
	{
		if(*first == data) return first;
		++first;
	}
	return last;
}

灵活:算法可以进行配置,有些算法只提供了一个框架,具体算法该做什么事情,需要用户在外部进行配置

sort(first,last)  //[first,last)区间的元素进行排序,默认为升序
sort(first,last,cmp) //需要用户传递cmp(元素之间的比较方式)
//cmp:将元素按照小于方式比较,则是升序;将元素按照大于方式比较,则是降序
//cmp可以通过函数指针、仿函数、lambda进行传递

六大组件

容器、迭代器、算法、仿函数/函数对象、适配器、空间配置器(内存池)

1.容器:STL对常见数据结构的封装(模板类方式体现)
序列式容器(线性数据结构)

C++98string专门用来管理字符串动态类型的顺序表
vector管理任意类型的动态类型数据表
list带头结点循环双向链表
deque双端队列,类似于动态的二维数组
C++11array静态类型的顺序表
forward_list带节点循环单链表

关联式容器(k-V)

底层为红黑树结构底层为哈希表结构
mapunordered_map
setunordered_set
multimapunordered_multimap
multisetunordered_multiset

2.迭代器:
概念:提供一个结构,可以依次遍历容器中的元素,而又无需暴露容器的底层实现原理;
作用:主要是给算法来应用的,让算法可以操作任意容器中的数据
本质:就是一个指针 || 对指针进行封装。

3.算法:解决问题的步骤
分类:a.与数据结构相关联的算法:就是容器中的成员函数;b.通用算法:sort/reverse…;
注意:算法要操作不同容器中的数据,必须要借助迭代器。

4.仿函数/函数对象
概念:可以像函数一样使用的对象;
实现:只需在类中将()重载即可(():是函数重载调用符);
作用:用来配置算法的功能,使算法更加的灵活。

5.适配器:一种设计模式
概念:将其他结构进行封装然后形成一种新的结构;
分类:
容器适配器:stack/queue/priority_queue;
迭代器适配器:反向迭代器,其内部就是对正向迭代器进行封装;
函数适配器:用来让一个函数对象表现出另外一种类型的函数对象的特征

6.空间配置器
高效为STL中各个容器申请和释放空间,以及对空间进行管理;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值