上一页 1 2 3 4 5 6 7 ··· 14 下一页
摘要: set/multiset的底层是rb_tree,因此它有自动排序特性。set中的元素不允许重复必须独一无二,key与value值相同,multiset中的元素允许重复。 set的模板参数key即为关键值,Compare为比较方式,默认的比较方式是less,默认的空间配置器是alloc, set对rb 阅读全文
posted @ 2019-12-17 16:58 C_hp 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 通过对operator new和和new expression的学习,了解到这两个到最底层仍然是通过调用malloc和free来对内存进行申请与释放的,如下图所示 不能重载new,因为new是一个表达式,::operator new是全局的,它的应用较为广泛,如果重载它可能会导致一些未知错误(但是其 阅读全文
posted @ 2019-12-17 11:56 C_hp 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 博主原文链接 阅读全文
posted @ 2019-12-17 09:39 C_hp 阅读(478) 评论(0) 推荐(0) 编辑
摘要: 关联式容器就是通过key值来寻找value,这个和数据库很相像,为了提升查找效率,因此关联式容器底层大多数用红黑树或哈希表来实现。 红黑树是高度平衡的二叉树,它也被称为平衡二元搜索树。 如上所示,正常++ite的访问出来的顺序即为中序遍历:5,6,7,8,10,11,12,13,15 set有两种插 阅读全文
posted @ 2019-12-16 17:14 C_hp 阅读(435) 评论(0) 推荐(0) 编辑
摘要: 原博主博文地址 阅读全文
posted @ 2019-12-16 16:22 C_hp 阅读(215) 评论(0) 推荐(0) 编辑
摘要: C++给我们三个申请内存的方式,new(new operator),array new 和placement new。 placement new意思是 让对象构建在已经分配好的内存上。 (这里我再把下面的两行代码解释一下) 首先用array new申请好了内存,然后,placement new将一 阅读全文
posted @ 2019-12-16 12:43 C_hp 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 1.array new array new就是申请一个数组空间,所以在delete的时候一定不能忘记在delete前加[] delete加上[]符号以后,就相当于告诉系统“我这里是数组对象,记得全部回收”,因此析构函数会被调用三次,在new array也一样,它会调用三次构造函数。 一旦忘记[]符号 阅读全文
posted @ 2019-12-16 12:24 C_hp 阅读(522) 评论(0) 推荐(2) 编辑
摘要: C++申请释放内存的方法与详情表 调用情况 1.new expression new表达式在申请内存过程中都发生了什么? 编译器将new这个分解为下面的主要3步代码,①首先调用operator new函数去申请内存,②然后再将指向内存的指针类型转换,③最后调用构造函数对这片内存进行初始化。 oper 阅读全文
posted @ 2019-12-16 11:22 C_hp 阅读(193) 评论(0) 推荐(0) 编辑
摘要: deque如何模拟连续空间?通过源码可以看到这个模型就是通过迭代器来完成。 迭代器通过重载操作符+,-,++,--,*和->来实现deque连续的假象,如上图中的 finish-start ,它通过下图中重载-号来实现迭代器的相减,返回deque的大小。 用finish迭代器上的node相减(nod 阅读全文
posted @ 2019-12-15 17:06 C_hp 阅读(345) 评论(0) 推荐(0) 编辑
摘要: deque是可双端扩展的双端队列,蓝色部分就是它的迭代器类,拥有四个指针,第一个cur用来指向当前元素,first指向当前buffer头部,last指向当前buffer尾部,node指向map自己当前buffer在map中的位置。 map叫做控制中心,它是由vector来实现的,所以它也拥有扩容功能 阅读全文
posted @ 2019-12-14 19:15 C_hp 阅读(235) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 14 下一页