自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 资源 (1)
  • 收藏
  • 关注

原创 STL 源码分析之萃取器

在STL中迭代器控制算法,算法操作容器。但是,泛型编程中算法并不知道迭代器传递给他的是什么样的类型,所以在迭代器和算法之间需要一个东西来分配类型。这东西就是萃取器。这是一种编程的技法。下面上图后直接上模拟的萃取器代码。并且说明原理。                               下面上模拟代码。都备注好了。#includeusing namespace std;/

2018-01-25 19:55:58 343 2

原创 SGI STL 源码分析(四)Vector构造的过程

/explicit 防止隐式类型转换。并且在参数中拿到一个分配器,用VectorBase里面的分配器来初始化他。 //这里调用的Vector里面的默认构造函数。 explicit vector(const allocator_type& __a = allocator_type()) : _Base(__a) {} //传递进来的是有长度,并且有类型的话,就会调用VectorBase里

2018-01-23 16:09:03 166

原创 SGI STL Vector代码剖析(三)

我们接着Vector(二)来继续解析代码。public: iterator begin() { return _M_start; }//这里的iterator这是一个类型指针,这里的意思是返回一个类型指针。 const_iterator begin() const { return _M_start; } iterator end() { return _M_finish; } con

2018-01-23 16:06:34 202

原创 SGI STL Insert方法追加分析

在上一篇的分析中, 我们看了Vector Insert方法,但是其中的copy_backward(__position, _M_finish - 2, _M_finish - 1);等算法因为没有做出详解,所以分析的不够透彻,接下来我们继续进行分析。if (_M_finish != _M_end_of_storage) { construct(_M_finish, *(_M_finish -

2018-01-23 10:49:44 496

转载 STL 算法之Copy_Backward

前文中展示了copy的魅力,现在我们来看一下它的孪生兄弟copy_backward,copy_backward算法与copy在行为方面相似,只不过它的复制过程与copy背道而驰,其复制过程是从最后的元素开始复制,直到首元素复制出来。也就是说,复制操作是从last-1开始,直到first结束。这些元素也被从后向前复制到目标容器中,从result-1开始,一直复制last-first个元素。举个简单的

2018-01-22 16:50:25 229

原创 STL算法分析之Copy()算法

在看SGI STL源码的时候,毕竟会碰到很多的算法,不理解这些算法对我们的阅读产生了很大的影响,现在先来分析下几个已经碰到的了的算法。第一个Copy()算法。Copy算法说起来很简单就是将迭代器里面的 [first,last]区间里的元素赋值到指定的 result 指定的区间里面去[result,result+(last-first)]。看下函数原型 并且解析下。[cpp]

2018-01-22 15:27:42 415

原创 SGI STL代码剖析之Vector(二)

接着上文,我们继续剖析STL,上一个帖子我们剖析了VcetorBase,这回我们继续来剖析Vector里面的代码Vector是个大类,现在只能从上到下一点点的来分析了。讲解说明都打在注释上了。迭代器这里先略过下,Insert方法就是在指定的位置,插入指定的数据。接下来看Insert里面的实现。这是Size方法里面的实现。现在来看两个很有意

2018-01-20 22:43:35 261

原创 SGI STL原代码分析之Vector(一)。

STL版本有很多种,STL是一套泛型编程框架标准,只要实现了这套标准的东西,都是叫做STL。。  所以STL有很多版本,但是SGI STL是最为标准,而且是STL之父写的所以是最为权威的STL模板。目的:分析Vector构造到Push_back这一系列过程中,STL中的实现过程。开干。。。~!!!!首先来到Vector这个类,Vector模板里面传递了两个参数,第一个是

2018-01-19 23:09:49 2468

原创 STL之三种New

new一共有三种形式。new operator,operator new ,place new。new operator 相当于new *p=new int;  这种形式的New,他会先申请可用空间,然后在调用构造方法。Operator new 只会分配内存空间,但是不会调用构造方法。string* str=operator new(sizeof(string));place new 是在已有的空

2018-01-19 17:01:01 692

原创 关于成员模板的补充

本文是对之前的成员模板函数进行的补充说明在模板中生成的类都是想对独立的,详细情况如下就相当于做了这种骚操作,显然,传递进去的参数是错误的。。。。 这样怎么进行转换了。。 想要解决这个问题其实很简单,只要写一个成员模板就可以了。 如下这样就可以完成转换。为什么了。如下:假设函数模板是相对于类是独立的,那么在调用的时候就会出现上述情况,这样的话就可以完成

2018-01-16 10:27:40 218

原创 STL 基础概述

STL是一套标准,只要实现了套标准就是一个STL,是一套基于泛型程序设计的一套框架,这套框架帮我们实现了基本的容器和算法。STL分为六大组件,容器,算法,迭代器,函数对象,分配器。STL中最基本的三大组件,容器,算法,迭代器。容器是用来存储元素的,算法是用来操作数据的,中间有个迭代器是用来将容器和数据连接起来操作的。迭代器是一个Smart point 里面做了一些类似指针的操作,迭

2018-01-07 17:55:33 451

原创 STL学习之路-》特化

特化的含义:特化其实就是特殊化。我们先从函数模板的特化开始说,比如template T max(T lHs, T lRs){return lHs > lRs ? lHs : lRs;}int main(){max(1, 2);return 0;}这样调用时没有问题的。接下来template T max(T lHs, T lRs)

2018-01-06 14:19:41 452

原创 STL学习之静动态多态,成员模板

1.动态多态和静态多态的区别。动态多态:动态多态就是在程序运行过程中,拿着父类的指针去访问子类的对象。静态多态:静态多态其实就是泛型,在静态编译的时候实现多态。2.动态多态和静态多态共同点和不同点。静态多态和动态多态都是为了实现多态,统一一个函数实现接口。动态多态中会有必须要实现的纯虚函数,所以,动态多态的实现是强制性的。而在静态多态中,是必须实现统一的接口才能够达到功能,

2018-01-06 11:43:48 265

自己写的toolhelp工具类的封装。有源代码,lib,dll

自己写的toolhelp类的封装。主要使用查找进程和进程加载的模块,线程等信息的。test里面有部分demo。编译环境VS2015,有源代码,lib,dll你要啥有啥都一切都给你了。需要的下下,换点积分。。

2018-09-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除