STL学习(自学手册+源码分析)

1.1 STL六大组件 功能与运用

1.容器(containers):各种数据结构,如vector,list,deque,set,map,用来存放数据。STL容器是一种类模板(calss template )。
2.算法(algorithm):各种常用算法如sort、search、copy、erase等。STL算法是一种(函数模板)function template。
3.迭代器(iterators):扮演容器与算法之间的“胶合剂”,是所谓的“泛型指针”。从实现角度看,迭代器是一种将*、->、++、–等指针操作重载的类模板,所有STL容器都附带有自己专属的迭代器。
4.仿函数(functors):行为类似函数,可以作为算法的某种策略(policy)。是一种重载了函数调用运算符()的class 或 class template。一般函数指针可以视为狭义的仿函数。
5.适配器(adapters):一种用来修饰容器或仿函数或迭代器接口的东西。例如STL提供的queue和stack,虽然看似容器,但是实质是容器适配器,因为底层是用其他容器(例如deque)首先的。
6.配置器(allocators):负责空间配置与管理。从实现的角度来看,配置器是一个实现了动态空间配置、空间管理、空间释放的类模板。

1.2容器结构与分类

在这里插入图片描述

1.序列式容器(每个元素都有确凿位置)
1)Array:数组 使用的是连续空间 固定大小。
2)vector:尾部可以扩充,分配器来实现自动扩充。
3)deque(双端队列): 两端都可以插入
4)list(双向链表):实际上也是双线环状的链表
5)forward_list(单向链表):只能单向访问
2.关联式容器(key-value)
1)Set/Multiset:不可重复/可重复的集合(Key = Value),内部使用红黑树实现结构。
2)Map/Multimap:不可重复Map/可重复Map(允许拥有重复Key)
3.无序式容器(也是一种关联式容器)
底层实现使用的hashtable
在这里插入图片描述
1)unordered_Set/Multiset:无序集合 底层实现用hash。
2)unordered_Map/Multimap:无序Map,底层实现用hash。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于C++ STL分析,这是一个广泛而复杂的话题。C++ STL是C++标准库中的一部分,包含了许多不同的容器、算法和迭代器等组件,用于提供通用的数据结构和算法支持。 在进行分析之前,你需要具备一定的C++编程知识和理解C++模板的工作原理。然后,你可以通过查看STL码实现来深入了解其内部机制。 在C++ 11中,STL引入了一些新的特性和容器。例如,引用中提到的range-based for循环语句,可以更方便地遍历容器中的元素。此外,C++ 11还对容器进行了分类,包括序列容器、关联容器和无序容器等。 引用提到了STL的六个主要部分,包括容器、算法、迭代器、函数对象、适配器和分配器。这些部分提供了不同的功能和特性,可以满足各种编程需求。 在C++ 11中,一些容器名称发生了变化,如slist被重命名为forward_list,hash_set和hash_map被重命名为unordered_set和unordered_map。这些变化是为了更好地反映容器的功能和语义。 要深入了解STL码,你可以参考一些重要的资网站,如cplusplus.com、cppreference.com和gcc.gnu.org。这些网站提供了详细的文档和例子,以帮助你理解STL的实现细节。 总之,要进行C++ STL分析,你需要具备一定的编程和模板知识,并参考相关的文档和资。通过深入研究STL码实现,你将能够更好地理解其内部机制和使用方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值