
c++
文章平均质量分 64
小白起步
每天都要学到新东西
展开
-
c++基础
1.函数重载的二义性调用 当我们在进行重载函数的调用时,会进行函数的匹配。首先会对函数名进行匹配,然后开始对实参进行匹配,在使用实参数量初步判别候选函数之后。再进行实参类型与形参的匹配。此时会开始寻找最最佳匹配。 例如void fun(int v1);void fun(int v1, int v2);void fun(double d1, double d2 = 2.12);原创 2016-12-21 18:37:34 · 275 阅读 · 0 评论 -
从零开始,打造自己的STL(四、list)
简述在前面我们看了vector的实现之后相信对容器有了一定的认识。容器即为存放物件之所,它代表着一块空间。想要直观的了解一个容器,那么看懂他的空间分配策略是一个非常有效的入手方式。接下来我们就来看看STL中的list又是如何实现的吧。list的结构list就是我们常说的链表,说到链表相信大家就很熟悉了。非连续空间、通过指针来连接每一个小空间、插入和删除都是O(1)操作,元素访问效率较低等等。。。原创 2018-04-23 15:27:49 · 383 阅读 · 0 评论 -
从零开始,打造自己的STL(三、alloc)
简述在stl中,所有的内存分配与释放都是交由allocator来实现的。在大部分情况下,我们都接触不到这里面的内容,因为它一直是隐藏在幕后悄悄的工作。 当然如果对于内存分配有特殊的要求的话,STL也提供了接口供我们使用自己的分配器 比如在vector的定义上template <typename _Tp, typename _Alloc = alloc >class vector : prote原创 2018-04-23 15:26:24 · 753 阅读 · 0 评论 -
从零开始,打造自己的STL(二、vector)
vector的内存布局以及操作方式与array非常的类似,都是一段连续的内存空间。两者之间唯一的差距就是空间运用的灵活性。array的空间在配置好了之后就无法更改,它所存放的数据量是固定的,一但空间不够用之后需要重新配置一块更大的空间。vector则不然,它的内存空间会随着元素的加入自动扩充新的空间供给使用,这样使用起来就不需要担心空间是否够用了。vector的内存结构vector采用了连续内存空间原创 2018-04-23 15:24:45 · 434 阅读 · 0 评论 -
一. 简述
简介对于每一个热爱c++的人来说,STL都是他们日常撸码、高效工作的必定会使用到的标准模板库。STL取用范型的思想,通过模板元编程,去掉了不同型别所带来的差异性,极大的提高了代码的复用性。既然STL如此强大与方便,我们当然要好好的学习它啊。仅仅停留在使用层面是是远远不够的,我们必须深入到代码内部,详细的了解它内部的工作原理。了解他不只是因为我们作为底层开发者不搞懂原理誓不罢休的精神,更是因为要更好的原创 2018-04-23 15:22:41 · 392 阅读 · 0 评论 -
双向链表
双向链表的操作与单链表的基本相似typedef struct DoublyListNode{ int data; DoublyListNode *prev; DoublyListNode *next;}Node;class DoublyList{public: DoublyList(); ~DoublyList(); void CreateN原创 2017-05-20 18:52:22 · 245 阅读 · 0 评论 -
单链表的使用
封装的单链表方法typedef struct ListNode{ ListNode *next; int data;}node;class list{public: list(); ~list(); //构造节点时使用尾插法 void CreatNode(int *arr, int n)const; bool IsEmpty()cons原创 2017-05-20 17:00:20 · 257 阅读 · 0 评论 -
c过渡到c++
1.为什么要学习c++? c++能够提高程序的运行效率 通过这张能力雷达表可以看出c++的个方面能力都是比较强的。在生产力上目前虽然比不上java,但它的的效率和灵活度上是Java无可比的。 c++不仅仅是一门单纯的编程语言,它可以看做是一个语言的联盟,各种语言的优点都被c++所吸收。因为c++壤扩的范围太大,所以学习起来会有一定难度。 c++当中原创 2016-12-20 18:46:00 · 627 阅读 · 0 评论 -
运算符重载里面程序运行细节
用一个Integer的类来模拟int数据类型的操作过程首先实现运算符+的重载,来详细观察里面的执行流程。 在该类中写出了默认析构函数,默认拷贝函数,默认赋值函数。 重载了构造函数,operator= 函数,operator+ 和operator+的友元函数在operator+中通过临时的类对象实现了加法而不会改变类成员变量原本的值,返回值必须是类的对象而不能是引用,返回类对象时会调用拷贝构造函数原创 2017-01-03 23:00:01 · 407 阅读 · 0 评论 -
引用的基础使用
引用的几个特性: 1.引用相当于变量的别名 2.没有独立的空间 3.与变量公用同一块内存空间 4.不能变更引用的指向所以在使用引用时,必须在其定义时就给其指向一个变量。后续的任何对于引用的操作相当于是对变量的操作。对于常量必须用const引用来指向在使用引用时多用于参数的传递。因为它与变量公用同一块内存地址,所以在传参后对引用的值进行修改,它也会作用在外部的变量上,变量的值也会被修改。同时它原创 2016-12-26 13:48:20 · 292 阅读 · 0 评论 -
复制构造函数
假设定义了一个ClassDemo的类class ClassDemo{public: ClassDemo(); ClassDemo(int num); ~ClassDemo();private: int _num;};在main函数中CLassDemo demo = 10;demo = 20;第一句话代表的并不是赋值,此时会调用转换构造函数。 第二句话会调用原创 2017-01-02 20:33:15 · 334 阅读 · 0 评论 -
构造函数详解
构造函数是类中的一个特殊成员函数,它一般为公有的。在特殊的情况下它可能为私有的。此时这个类将会无法新建对象。当有一个对象被新建时,构造函数会被自动的调用,这种机制能够确保正确的初始化。在一个空类中,构造函数是默认生成的。但如果我们写了一个构造函数之后,便不会再生成默认的构造函数。一般的,在创建对象的时候构造函数会被自动调用,在方法结束之后析构函数会被自动调用。但如果是new出来的对象就需要我们手动的原创 2017-01-01 21:04:03 · 407 阅读 · 0 评论 -
从零开始,打造自己的STL(五、deque)
deque简介deque是双向开口的连续线性空间,支持内部元素的随机访问。看到这个概念,相信大家一定会想起vector,vector是单向开口的连续线性空间,内部元素也是可以随机访问的。deque的元素类似这样那么deque像比于vector的差异在哪里deque的头部插入是vector没有的,虽然从技术角度来讲,vector实现头部插入也不是很难,但是效率太低,不值得且没必要除了一些极端情况下原创 2018-04-23 15:29:09 · 294 阅读 · 0 评论