- 博客(6)
- 收藏
- 关注
原创 【STL源码剖析】deque!!!
面试网易的时候特么问我deque,从来没用过啊(委屈脸)。 deque:双端队列,它是动态地以分段连续空间组合而成的,随时可以增加一段新的空间并链接起来。 deque和vector的区别: deque允许于常数时间内对头端进行元素的插入和移除操作。 deque没有capacity观念。 deque没有像vector那样“因旧空间不足而重新配置一块更大的空间,然后复制元素,再释放旧空间”。...
2019-04-25 20:23:08
251
原创 【STL源码剖析】list!!!
list和vector是两个最常被使用的容器。相较于vector的连续线性空间,list就显得复杂许多,它的好处就是每次插入或删除一个元素,就配置或释放一个元素空间。而且对于任何位置的元素插入或元素移除,list永远是常数时间。 list是一个双向链表,STL的list节点结构: template <class T> struct __list_node { typede...
2019-04-25 14:42:25
140
原创 【STL源码剖析】vector!!!
STL中我们使用的最多的就是容器了,容器根据数据在容器中的排列特性,分为序列式容器和关联式容器两种。 序列式容器中,我用的最多的可能就是vector了吧,这章就具体讲讲vector,到底能挖多深。 array是静态空间,一旦配置了就不能改变,要换个大点(或小点)的房子,一切都要由客端自己来。 vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素,所以相较...
2019-04-25 14:10:10
111
原创 【STL源码剖析】迭代器
STL的中心思想在于:将数据容器和算法分开,彼此独立设计,最后再以一帖胶着剂将它们撮合在一起。容器和算法的泛型化,用class templates和function templates就可以分别达成目标。 迭代器是一种智能指针。 为了获得迭代器所指对象的型别,一种是利用了function template的参数推导机制。例子如下: template <class I,class T&...
2019-04-24 11:15:32
180
原创 【STL源码剖析】空间配置器
腾讯二面:聊聊STL的空间配置器。 我:?????然后开始聊vector动态扩容,/(ㄒoㄒ)/~~ SGI STL的配置器与众不同,名称是alloc而非allocator。标准的allocator只是对操作符new和delete的一层薄薄的封装,并没有考虑到任何效率上的优化。 一般而言,我们习惯的C++内存配置操作和释放操作是这样的: class Foo {...}; Foo *pf=...
2019-04-22 22:49:34
211
原创 【STL源码剖析】开篇
第一次,面试官:用过STL库吗? 我:??? 面试官:就是vector之类地。 我(挠头):哦~~用过用过,还有栈啊,堆啊(wrong answer)。。。 面试官心想:这孩子可以回家等消息了 第二次,面试官:用过STL库吗? 我(语气坚定):嗯嗯! 面试官:看过STL源码吗,知道deque底层实现吗? 我:???我还是回去等消息吧。 写这篇博文,是因为实在懒得手写了...
2019-04-22 19:12:27
192
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人