STL源码解析
文章平均质量分 92
Aries_Ro
go go go! That's my utopia!
展开
-
5.STL源码解析-算法、仿函数、适配器
仿函数是一种类或对象,可以像函数一样被调用。在STL中,仿函数广泛用于算法和容器中,允许我们以一种类似函数的方式进行操作。仿函数的关键特点是它实现了函数调用运算符 operator()。原创 2024-03-03 14:00:09 · 709 阅读 · 0 评论 -
4.关联式容器
关联式容器是指数据是键值对的格式。容器内部结构(可能是RB-tree或者hash-table)便依照其键值大小,以某种特定规则将这个元素放置于合适的位置,关联式容器没有所谓头尾(只有最大元素和最小元素);所以不会有所谓等行为的操作。原创 2024-03-03 13:43:46 · 567 阅读 · 0 评论 -
3.3 序列式容器-deque、stack、queue、heap、priority_queue
std::deque(双端队列)是C++标准模板库(STL)中的一种容器,表示双端队列数据结构。它提供了在两端高效地进行插入和删除操作的能力。与vector的连续线性空间类似,但有所不同,deque动态地以分段连续空间组合而成的,随时可以增加一段新的空间并链接起来。因此deque的迭代器并不是普通的指针;之前提到vector的动态内存增长需要涉及到更大内存的分配;内存数据的复制;原内存空间的释放。deque避开了vector中的反复内存搬移,但是数据结构的设计和迭代器架构却异常复杂。原创 2024-03-02 18:21:35 · 871 阅读 · 0 评论 -
3.1 序列式容器-list
std::list是一个双向链表(doubly linked list)的容器。相对于vector的连续线性空间存储,list是非连续的线性空间存储。因此list和vector这两个最常被使用的容器经常被用来比较。vector当需要快速随机访问元素的时候,例如在循环中通过索引访问元素。当知道容器的大小,并且需要预先分配一定数量的元素的情况。list当需要频繁在容器中间或头尾进行插入和删除操作时。当不需要频繁随机访问元素,而是通过迭代器遍历元素。原创 2024-03-02 17:53:54 · 268 阅读 · 0 评论 -
3.1 序列式容器-vector
C++本身提供了一个序列容器array数组,STL中新增了一个vector,被称为动态数组。它与array的区别是它提供了动态空间大小。原创 2024-03-02 17:48:02 · 1021 阅读 · 0 评论 -
2.STL源码解析-空间配置器
空间配置器就是给容器分配空间的。像我们平时使用new和delete动态分配释放对象内存一样。空间配置器也封装了这些功能。但是STL的空间配置器不仅仅只简单调用分配空间,它在一些地方都做了优化来提升性能。原创 2024-02-05 21:00:34 · 838 阅读 · 0 评论 -
1.STL源码解析-迭代器Iterator
设计迭代器的时候,需要设计适当的相应型别以及对应的符号重载。而设计适当的迭代器,则是容器的责任。只有容器才知道该设计出怎样的迭代器来遍历自己,并执行迭代器该有的各种行为(前进、后退、取值、取用成员等)。而算法,完全是独立于容器和迭代器之外的,可以自由设计,在设计时以迭代器为对外接口就行了。traits技法广泛用于STL中,它利用“内嵌型别”的编程技巧,与编译器的模板templete参数推导功能,来为C++提供型别识别的能力。原创 2024-02-05 20:57:05 · 937 阅读 · 0 评论