
mytinystl
记录stl的实现细节
黑发要知勤学早
懒得连简历都不写
展开
-
STL中的空间配置器allocator(很详细)
文章点这里原创 2021-03-25 16:09:11 · 130 阅读 · 0 评论 -
stl容器map和set的比较
1.map和set底层的实现都是RBT,map是存储的key-val排序,而set存储的是key,它们都是基于key来排序的。 2.map的key是const数,set的也是const的,不允许改变,因为红黑树的结构是它们决定的。map的val的值可以改变,但是不能改变key的值。 ...原创 2021-03-24 22:48:25 · 157 阅读 · 0 评论 -
C++deque
deque是一个双向的开口的连续性空间,其没有和vector类似的capacity概念,它是动态的以分段连续数组组合而成,随时可以增加一段空间链接起来. Deque底层是采用的一块小的连续空间,这块内存的每一个地址是指向一块连续的空间的,当空间不够的时候 它的iterator是比较特殊的, template<class T,...> struct __deque_iterator{ ... T* cur; T* first; T* last; map_po原创 2021-03-22 13:13:37 · 113 阅读 · 0 评论 -
STL源码剖析 p27 specializing member ‘Test<int>::a‘ requires ‘template<>‘ syntax
template的编译器差异大,得在变量类型前面加上 template <> #include<iostream> using namespace std; template <typename T> class Test { public: static int a; }; template <> int Test<int>::a = 1; template <> int Test<char>::a =原创 2021-03-11 22:55:39 · 780 阅读 · 0 评论 -
namespace
C++中的命名空间:为了减少合并程序时变量和函数的过定义 参考文档点击这里 定义格式: namespace myspace{ //int a,b; .....可以定义各种各样的函数,变量 } 使用的时候 using namespace myspace; int c = a; //直接可以使用myspace中定义的变量 //多个空间可以定义相同的变量也不会发生冲突 多个空间可以定义相同的变量也不会发生冲突 #include <iostream> using namespace std原创 2021-03-11 16:38:06 · 80 阅读 · 0 评论 -
每一个stl底层数据结构的实现
1.vector 底层数据结构为数组 ,支持快速随机访问 2.list 底层数据结构为双向链表,支持快速增删 list底层实现 3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问 deque是一个双端队列(double-ended queue),也是在堆中保存内容的.它的保存形式如下: [堆1] --> [堆2] -->[堆3] --> … 每个堆保存好几个元素,然后堆和堆之间有指针指向,看起来像是list和原创 2021-03-08 11:07:17 · 121 阅读 · 0 评论