
知识总结——C++进阶
文章平均质量分 94
bfsm
这个作者很懒,什么都没留下…
展开
-
STL——算法
目录`accumulate``count`与`count_if``find`与`find_if``max`与`min``merge``partial_sort``partition``reverse``sort``unique``next_permutation`与`pre_permutation`accumulate该算法作用是对某区间中的元素进行累加,使用时必须添加头文件<numeric>;// 对[first, last)区间中元素在init的基础上进行累加template &原创 2021-06-04 21:18:07 · 260 阅读 · 0 评论 -
类型转换与空间配置器
目录类型转换概念C++ 的四种转换空间配置器类型转换概念C 语言中的类型转换:隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译失败;显式类型转化:需要用户自己判断从什么类型转换为什么类型,转换格式为在需要转换的变量前加(要转换的类型);为什么需要 C++ 中的类型转换:隐式类型转化有些情况下可能会出问题:比如数据精度丢失;显式类型转换将所有情况混合在一起,代码不够清晰;因此 C++ 提出了自己的类型转化风格,注意因为 C++ 要兼容 C 语言,所以 C++ 中还可以原创 2021-06-04 19:36:13 · 265 阅读 · 1 评论 -
特殊类设计
目录设计一个类,只能在堆上创建对象实现方法设计一个类,只能在栈上创建对象实现方法一实现方法二设计一个类,不能被拷贝实现方法设计一个类,不能被继承实现方法设计一个类,只能创建一个对象概念饿汉模式懒汉模式设计一个类,只能在堆上创建对象实现方法将构造函数私有化,只给用户提供一个获取对象的接口,接口内部是在堆上创建对象;因为用户不能自己创建对象,所以就无法调用我们的接口来获取对象,所以这个接口必须被设计为静态接口,这样用户可以通过类名来调用接口获取对象;因为拷贝构造出来的对象是在栈上,所以我们应该将拷贝原创 2021-06-04 10:27:29 · 159 阅读 · 0 评论 -
C++智能指针
目录内存泄漏分类检测智能指针原理RAII简单实现`auto_ptr`概念实现`unique_ptr`概念实现`shared_ptr`概念安全问题实现循环引用删除器内存泄漏分类堆内存泄漏(Heap leak)堆内存指的是程序执行中依据须要分配通过malloc / calloc / realloc / new等从堆中分配的一块内存,用完后必须通过调用相应的free / delete / delete[]删掉,假设程序的设计错误导致这部分内存没有被释放,那么以后这部分空间将无法再被使用,就会产生 Hea原创 2021-06-03 10:32:17 · 256 阅读 · 0 评论 -
线程库和异常
目录线程库概念线程库概念在C++11之前,涉及到多线程问题,都是和平台相关的,比如windows和linux下各有自己的接口,这使得代码的可移植性比较差。C++11中最重要的特性就是对线程进行支持了,使得C++在并行编程时不需要依赖第三方库,而且在原子操作中还引入了原子类的概念。要使用标准库中的线程,必须包含< thread >头文件。...原创 2021-06-02 08:55:25 · 278 阅读 · 0 评论 -
C++11新特性
目录列表初始化背景内置类型自定义类型变量类型推导`auto``decltype`默认成员函数控制背景显示缺省函数删除默认构造右值引用左值与右值引用列表初始化背景问题:在 C++98 中,标准允许使用花括号 {} 对数组元素进行统一的列表初始值设定,如:int array1[] = {1,2,3,4,5};int array2[5] = {0};对于一些自定义的类型,却无法使用这样的初始化,如下面的这些操作在C++98中是不被允许的:vector<int> v{1,2,3,4原创 2021-05-30 16:13:10 · 229 阅读 · 1 评论 -
哈希表应用
目录位图概念实现布隆过滤器概念位图概念背景:现在有这样一道题,给 40 亿个不重复的未排序的无符号整数,输入一个无符号整数,请你判断一下这个数是否在这 40 亿个数中;这个题的解法可以有很多种:直接遍历查找、先排序再二分查找等等,但是有一个问题,那就是你这些操作的前提是要先将这些数据存入内存中,但是这么庞大的数据肯定是放不下的,那么你该怎么办呢?其实我们并不需要存储数据的完整值,我们只需要标记一下这个数是否存在,存在或者不存在这是两个状态,因此一个比特位就可以完成这件事;概念:所谓位图,就是使原创 2021-05-28 19:16:30 · 364 阅读 · 0 评论 -
哈希表介绍
目录原创 2021-05-27 21:11:32 · 587 阅读 · 0 评论 -
AVL树与红黑树
AVL树#include<iostream>using namespace std;template<class T>struct AVLNode { //数据 T _data; //平衡因子 int _bf; //左孩子指针 AVLNode* _left; //右孩子指针 AVLNode* _right; //父结点指针 AVLNode* _parent; //带参构造函数 AVLNode(const T& val = T()) :_p原创 2021-05-24 13:18:26 · 230 阅读 · 1 评论 -
容器——map和set
目录关联式容器键值对概念接口介绍关联式容器序列式容器:在前面我们学习了 STL 中的string、vector、list、deque等容器,而这些容器因为其底层是线性序列的数据结构,里面存储的是元素本身,所以我们将它们称之为序列式容器;关联式容器:关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的不单单是数据本身,而是存储了关键码和数据的<key, value>结构的键值对,该种容器在数据检索时比序列式容器效率更高;键值对概念概念:用来表示具有一 一对应关系的一种原创 2021-05-18 13:20:00 · 432 阅读 · 1 评论 -
二叉树进阶
目录二叉搜索树概念操作二叉搜索树概念二叉搜索树又称二叉排序树,它要么是一棵空树,要么是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值;若它的右子树不为空,则右子树上所有节点的值都大于根节点的值;它的左右子树也分别为二叉搜索树;操作...原创 2021-05-11 14:07:32 · 148 阅读 · 0 评论 -
C++——多态
目录概念实现构成多态的前提条件概念现实中:不同的人去干同一件事产生了不同的结果,例如:成人买票全价,学生买票半价等;代码中:不同的对象去执行同一函数从而产生了不同的结果,这就是多态;实现构成多态的前提条件在继承关系体系中,当...原创 2021-05-05 09:43:14 · 214 阅读 · 0 评论 -
C++——继承
目录继承的概念概念语法定义格式继承方式总结继承中的赋值转换概念举例继承中的作用域派生类的默认成员函数继承的概念概念 继承 (inheritance) 机制是面向对象程序设计中可以使代码复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类(子类),原始的类被称为基类(父类),继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程,以前我们接触的复用都是函数复用,而现在所学的继承是类设计层次的复用;语法定义格式class 派生类类名 :原创 2021-04-27 16:59:56 · 229 阅读 · 0 评论