C++入门学习系列
该专栏为C++学习笔记
__MrCool
飘飘何所似,天地一沙鸥
展开
-
C++学习笔记——空间配置器
空间配置器原创 2019-09-14 14:11:03 · 463 阅读 · 0 评论 -
C++学习笔记——关联式容器(下)
前面的树形结构的关联式容器介绍完,下面要说的是哈希结构的关联式容器。文章目录1. unordered系列2. 哈希2.1 概念2.2 哈希冲突2.3 哈希函数2.3.1 除留余数法2.3.2 直接定址法2.4 哈希冲突的解决2.4.1闭散列2.4.1.1 线性探测2.4.1.2 二次探测2.4.2 开散列2.4.2.1 哈希桶2.4.2.2 具体实现1. unordered系列看到uno...原创 2019-08-18 12:43:35 · 615 阅读 · 0 评论 -
C++学习笔记——右值引用与lambda表达式
相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。相比较而言,C++11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而且能提升程序员的开发效率。这里介绍两个特性。目录右值引用右值和左值左值引用与右值...原创 2019-08-17 16:45:27 · 1214 阅读 · 0 评论 -
C++学习笔记——关联式容器(上)
在说《二叉搜索树》时,就说结局会浮现出来,其实前面的数据结构,都是为这篇博文的。》关联式容器在前面说到vector、list、deque等序列式容器,其数据的存储都是线性的,其查询的时候时间复杂度都比较高。关联式容器也是存储的数据,但是这里的数据都是以键值对的形式存在的,其检索的效率是非常高的。关联式容器有两种不同的结构,接下来要说的是树型结构的关联式 。该结构的容器主要有四种:m...原创 2019-07-23 00:02:03 · 255 阅读 · 0 评论 -
C++学习笔记——红黑树
在前面的基础上,来到最后一棵树,红黑树。目录概念性质结点的定义树的结构与定义红黑树的插入概念红黑树又可以叫双色树,只要有能够进行区分的两种颜色就行,通常是红色和黑色。它也是一种二叉搜索树,只是在每个结点上增加了颜色。通过颜色,来让这棵树达到平衡。性质以红黑两种颜色为例,可以看上面的图,来看下面的性质。根节点都是黑色 如果一个结点是红色的,则它...原创 2019-07-20 23:26:43 · 505 阅读 · 0 评论 -
C++学习笔记——AVL树
上回说到,二叉搜索树的时间复杂度并不稳定,于是进化出了另外一种树,AVL树,也叫平衡树。目录1、概念2、定义3、插入3.1 左单旋3.2右单旋3.3左右双旋3.4右左双旋彩蛋1、概念由于搜索二叉树对一个已经有序的数据进行插入的话,则会变成一个上一篇博文所画的树,变成一个类似单链表的树。它的查找效率就和单链表的时间复杂度是一样的,O(N)。于是有了一...原创 2019-07-16 23:16:58 · 260 阅读 · 0 评论 -
C++学习笔记——二叉搜索树
接下来的部分将会记录一些数据结构。有时候看一本书,就像欣赏一部电影,在无数的铺垫后,结局便浮现出来了。先来说一说第一个数据结构——二叉搜索树。目录概念基础操作创建插入查询删除彩蛋概念二叉搜索树,之所以是搜索树,是因为便于搜索。二叉搜索树可以说是堆的一种进化,因为堆的父亲结点总是比孩子结点大或者小,这要看是大堆还是小堆。那么二叉搜索数满足的是节点总是比左...原创 2019-07-15 15:01:29 · 522 阅读 · 0 评论 -
C++学习笔记——智能指针
c++里不像java等语言设置了垃圾回收的功能,但是c++通过它的王牌指针实现了智能指针这一解决办法。目录异常1、异常2、异常的使用3、异常的规则4、异常安全智能指针概念原理auto_ptrunique_ptrshared_ptr异常再说智能指针之前,先用异常来引出智能指针。 1、异常 先看一段代码void test()...原创 2019-06-19 00:47:24 · 274 阅读 · 0 评论 -
C++学习笔记——多态
前面说到了继承,那么就衍生出了多态。目录概念实现1、前提2、虚函数3、重写4、示例4、抽象类原理1、虚表指针2、虚表多继承和单继承的虚函数表1、多继承的虚表指针2、菱形继承彩蛋概念多态的概念用举例子的方式就比较好理解了。例子①:买票,对于买票这同一件事情,但是却有成人票、学生票、儿童票等。这是多态。例子②:变形,对于...原创 2019-06-09 16:13:10 · 221 阅读 · 0 评论 -
C++学习笔记——继承
对于面向对象的C++来说,不能仅仅依靠参数类型来使用函数来实现代码的复用,应该也有使用对象来实现代码的复用目录一、继承的初始1、概念2、定义3、实例二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数1、构造和析构2、拷贝构造和运算符重载五、友元与静态1、友元关系不能继承2、继承体系共享静态成员六、菱形继承1、多继承...原创 2019-06-03 00:05:45 · 182 阅读 · 0 评论 -
C++语言基础——IO操作
在学习C语言的时候,就已经接触到输入输出操作。但是对于C++面向对象的特性,输入输出就相对简单和安全多了。目录引言流IO流认识进阶控制符文件IO文件的打开与关闭文件的读和写引言以前在学习c语言的时候,是用printf和scanf进行输出和输人的方法。C++与C兼容的,所以也保留了用printf和scanf进行输出和输人的方法,以便使过去所编写的...原创 2019-05-18 19:12:02 · 910 阅读 · 0 评论 -
C++语言基础——stack和queue
学习完容器,来看看容器适配器。容器适配器也是STL的组成部分。目录deque概念迭代器特点总结容器适配器stack概念接口应用实现queue概念接口应用实现priority_queue概念接口运用细节deque 概念 在说容器适配器之前,先来说下双端队列,双端队列也是一个容器。名字是双端队...原创 2019-05-16 21:14:57 · 791 阅读 · 0 评论 -
C++语言基础——list
对于list,它也是一个容器,但list的底层就是双向链表结构,list我们按照前面学习的带头节点双向循环链表。博文目录list构造函数list的容量list的增删list的迭代器list的模拟实现vector和list的对比 list 对于list有三个成员变量,prev指针:指向前一个结点,即前驱结点;next指针:指向后一个结点,即后继...原创 2019-04-27 00:05:05 · 1140 阅读 · 0 评论 -
C++语言基础——vector
vector是表示可变大小数组的序列容器。vector的学习按照数据结构的顺序表。目录---- vector认识----构造函数----vector的容量增长----vector的增删查改----vector的运用----vector的模拟实现----vector的优缺点 vector 就像数组,一个vector对象,就必须是相同类型的元素。当我...原创 2019-04-19 00:02:07 · 1803 阅读 · 2 评论 -
C++语言基础——string类
在介绍string之前,先来了解一下STL吧STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。有了它,许多底层的数据结构以及算法都不需要自己重新造轮子,站在前人的肩膀上,健步如飞的快速开发。 string类 在C语言中,字符串可以定义为以'\0'结尾的字符数组...原创 2019-04-05 23:30:57 · 348 阅读 · 0 评论 -
C++语言基础——模板初级
模板就类似于模具。我们可以给模具,根据不同的材料铸成不同的铸件。那么我们给模板参数不同的类型,就会生成具体类型的代码。泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。目录一、 函数模板概念格式原理函数模板的实例化模板参数的匹配原则二、类模板类模板格式类模板的实例化三、非类型模板参数种类四、模板的特化概念...原创 2019-04-05 18:32:48 · 537 阅读 · 0 评论 -
C++语言基础——C/C++内存管理
目录C/C++内存分布C语言中动态内存管理方式C++中动态内存管理1、new/delete操作内置类型2、operator new与operator delete函数3、new和delete操作自定义类型4、new和delete的实现原理5、定位new表达式(placement-new)new/delete 与 malloc/free的区别单例模式饿汉...原创 2019-03-23 00:16:38 · 225 阅读 · 0 评论 -
C++语言基础——类和对象
在前面对C++有了一个初步的认识,下面便是与C不同的一点。类和对象。在C++里引入了面向对象的编程思想。便有了类和对象。为了方便学习,可对比C语言的结构体。目录1.类与对象的初步认知★概念★类的引入★类的访问限定符及封装★类的作用域★类的实例化★类的对象模型★类成员函数的this指针2、类的六个默认成员函数★构造函数★析构函数★拷贝构造函数...原创 2019-03-12 21:00:00 · 423 阅读 · 0 评论 -
C++语言基础——序言
在很久以前,我学习了C语言,但不能算学的好。总会在一些细节的地方掌握不到位。是C语言带我走向编程这条路,如今不能停留在C语言上面,还必须有新的武器,才这条路上走的更远。学习C++我觉得需要有一位挚友,就是他大佬。目录C和C++C++的历史命名习惯C++入门✦命名空间✦输入输出✦缺省参数✦函数重载✦引用✦内联函数✦auto✦基于范围的for循环...原创 2019-03-11 16:04:21 · 538 阅读 · 0 评论