摘要: 一、仿函数定义 仿函数是STL中最简单的部分,存在的本质就是为STL算法部分服务的,一般不单独使用。仿函数(functors)又称为函数对象(function objects),虽然函数指针虽然也可以作为算法的参数,但是函数指针不能满足STL对抽象性的要求,且无法和STL其他组件搭配,仿函数就是使一 阅读全文
posted @ 2019-08-01 16:24 灼光 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 编译器对关联容器的实现有两个版本,上一节总结了以红黑树做为基础的实现版本,这一节总结以哈希表(hash table,散列表)为底部结构的实现版本。 一、Hashtable简单介绍 Hashtable相比红黑树版本来说简单的多,但是内存占用来说大于红黑树,Hashtable把每一个要放入的元素折射成一 阅读全文
posted @ 2019-07-24 17:43 灼光 阅读(440) 评论(0) 推荐(0) 编辑
摘要: 关联容器我们可以看做是一个小型的数据库,它就是用key找value,编译器底层对于关联容器的实现有两种:红黑树(Red-Block tree)和哈希表(hash table,散列表)。 一、红黑树简单介绍 红黑树是高度平衡二叉树,左子树和右子树都是保持高度平衡的,不会出现某一个分支太长,并提供有迭代 阅读全文
posted @ 2019-07-22 16:55 灼光 阅读(378) 评论(0) 推荐(0) 编辑
摘要: 本节主要总结标准库Deque的设计方法和特性以及相关迭代器内部特征 1、Deque基本结构 Deque(双向队列)也号称连续空间(其实是给使用者一个善意的谎言,只是为了好用),其实它使用分段拼接起来的(分段连续),各个分段间是用Vector来管理的,Vector的每个元素就是一个指针,每个指针指向一 阅读全文
posted @ 2019-07-17 20:10 灼光 阅读(1259) 评论(0) 推荐(1) 编辑
摘要: 本节主要总结标准库Vector和Array的设计方法和特性以及相关迭代器内部特征 1、Vector 1.1 Vector 内部实现 Vector是自增长的数组,其实在标准库中没有任何一种容器能原地扩充,它给人假象的扩充只是在内存的另外一个地方找到一个大的空间,再把原来的数据搬过去; Vector只需 阅读全文
posted @ 2019-07-16 11:46 灼光 阅读(452) 评论(0) 推荐(1) 编辑
摘要: 本节主要总结迭代器的设计原则,以及iterstor traits的设计作用 1、迭代器遵循的原则 迭代器是算法和容器的桥梁,它是类模板的设计,迭代器必须有能力回答算法提出的问题才能去搭配该算法的使用 1.1 算法使用迭代器示例 示例展示了rotate算法的,rotate(begin,middle,e 阅读全文
posted @ 2019-07-16 10:47 灼光 阅读(435) 评论(0) 推荐(1) 编辑
摘要: 本节主要总结模板及其类模板分类以及STL里面的分配器、容器内部结构以及容器之间的关系和分类,还介绍了容器中List的结构分布 1、源代码版本介绍 1.1 VC的编译器源码目录: 2、类模板 2.1 类模板简介: 2.2 类模板分类: 泛化(GP Generic Programming),特化(Spe 阅读全文
posted @ 2019-07-14 09:27 灼光 阅读(572) 评论(0) 推荐(1) 编辑
摘要: 之前学习过标准库,最近身边有人问到相关话题,故在此做一个总结 1 标准库介绍 C++标准库:C++ Standard Library C++标准模板库:Standard Template Library(STL) 1.1 二者关系及表现形式 都是以头文件的形式提供不带.h,比如:#include<v 阅读全文
posted @ 2019-07-13 16:50 灼光 阅读(838) 评论(0) 推荐(1) 编辑
document.body.oncopy=function(){ event.returnValue=false; var t=document.selection.createRange().text; var curUrl = window.location.href; var s="本文来源于灼光的博客(https://www.cnblogs.com/laiyingpeng/) , 原文地址:" + curUrl + "转载请加上原文地址。"; clipboardData.setData('Text','\r\n'+t+'\r\n'+s+'\r\n\r\n\r\n'); }