细说 c traits classes
最近在看侯捷的《stl源码剖析》,看到第三章有关 traits 的介绍,被搞得一头雾水,看了半天不知所云。为了彻底了解这个技法的原理,硬着头皮上网查了资料,并结合 scott meyers 的 《effective c 》,总算是把 tr...
最近在看侯捷的《stl源码剖析》,看到第三章有关 traits 的介绍,被搞得一头雾水,看了半天不知所云。为了彻底了解这个技法的原理,硬着头皮上网查了资料,并结合 scott meyers 的 《effective c 》,总算是把 tr...
1.原理讲解 hashtable就是散列表((哈希表),将从下面几个方面来讲解散列表的原理 1.1散列表的概述 在说散列表之前,我们先说一下散列技术. 什么叫散列技术呢?一句话来说,散列技术是一种查找技术,而且是一种"一步到位"...
迭代器iterator是什么? 对于迭代器的理解可以从以下两个角度去剖析 “指针”对全部c/c 的程序猿来说,一点都不陌生。 在接触到c语言中的malloc函数和c 中的new函数后。我们也知道这两个函数返回的都是一个指针。 该指针指...
首先看一下io库,标准函数库,stl这些概念之间都是怎么样一个关系 介绍 什么是io库? io库就是有一些标准io类组成的类库 通过这些io类可以实现对可实现对设备(控制台,文件等)的io操作,对内存的io(即string类)操作 其中对控...
0.概述 如上图整理所示 红黑树是一种平衡的二叉树,引入它为了解决的问题是因为普通的二叉查找树在插入元素是正序或者逆序的时候,左右子树的高度会变得极奇不平衡,导致他就丧失了作为二叉查找树查找复杂度o(logn)的优势,复杂度会增长到o(n)...
0.概述 vector动态数组, 顾名思义 ,空间可以动态变化的数组,自然与数组array非常相似. array使用时必须一开始就定好使用空间,定好以后就不能变了, 使用途中要想让空间大一点,必须在重新开辟一块更大的内存空间,然后...
1.内存布局 1.0.概述 一个可执行程序文件需要在计算机硬件上运行起来, 其实质就是静态的文件被加载到内存中的过程, 可执行程序文件只是一个程序的载体。 那么执行一个应用后, 它在内存中是一个怎样的结构呢? 一个程序被加载到内存中,这...
本系列的上一篇文章讲了手动方式的内存管理 new delete 这种方式往往存在很多问题 这一节将讲通过智能指针来自动管理动态内存 智能指针的引入 智能指针的引入有以下几大原因 1.在动态内存管理中,如果new上一块...
在这一系列的第一篇文章中讲了 程序的内存结构 在堆区的内存是要通过new delete系列函数来分配释放的 那么在new delete的背后 程序到底做了什么?又有哪些注意点? 本文将一一解密 new operator 1. 这...
关于本系列的一个总结 今天先说说第一部分 程序的内存结构 介绍 关于程序的内存结构 其实用一张图就可以说明清楚 结构 详细的讲讲各个部分分别有什么 也是用一张图来说明清楚 例子 关键点 堆和栈有什么不同