自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 内联函数inline分文件编译报错的原因

内联函数是不能分文件编译的。如果使用函数内联,则必须在包括的头文件中实现内联函数。如果非要分文件编译,比如函数声明为内联://Add.hinline int Add(int a,int b);//Add.cpp#include"Add.h"int Add(int a,int b){ return a+b;}//main.cpp#include <iostream>#include"Add.h"using namespace std;int main(){

2021-11-26 17:44:31 3407

原创 AVL树(三叉链和二叉链)

文章目录AVL树的基本概念AVL树的基本概念二叉搜索树能够实现高效查找O(logN)。但是遇到特殊情况,比如升序或者降序就会退化为单支树,此时查找的效率就退化到了O(N)。AVL树又称平衡搜索树,它保证了当向搜索树中插入新的节点后,如果能使每个节点的左右子树高度只差绝对值不超过1,即保证了这棵树是平衡的,即有如下特点:左右子树都是平衡的(高度差的绝对值不超过1)如果一棵二叉搜索树的高度是平衡的,它就是AVL树。它的查找效率为logn...

2021-11-24 21:13:18 662 2

原创 12 C++的多态

文章目录一、多态的概念1.1. 多态的构成条件二、虚函数2.1. 虚函数的重写2.2. 虚函数重写的例外协变:父类与子类虚函数返回值类型不同析构函数的重写(基类与派生类析构函数的名字不同)三、C++11 override和final3.1. final:修饰虚函数,表示该虚函数不能再被重写3.2. override:检查派生类虚函数是否重写了基类某个虚函数,如果没有重写编译报错四、重载、覆盖(重写)、隐藏(重定义)的对比五、抽象类5.1. 抽象类有什么用六、多态的应用场景举例七、多态的实现原理7.1. 虚函

2021-11-20 00:22:01 22098 7

原创 11 C++的继承

文章目录一、继承的概念及定义1.1. 继承方式和访问限定符二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员七、菱形继承和菱形虚拟继承7.1. 菱形继承导致的问题7.2. 虚拟继承7.3. C++编译器如何通过虚继承解决数据冗余和二义性八、组合和继承的比较总结一、继承的概念及定义继承(inheritance)允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称为派生类。提高代码的重复利用率,是面向对象的重要一种手段。以前我们接触

2021-11-17 19:59:08 905 2

原创 二叉搜索树

文章目录一、什么是二叉搜索树1.1. 二叉搜索树查找的时间复杂度二、二叉搜索树的实现2.1. 接口概览2.2. 构造函数和析构函数构造和拷贝构造重载=运算符析构函数2.3. 插入节点的函数非递归实现递归实现2.4. 查找的函数非递归实现递归实现2.5. 删除节点的函数非递归实现递归实现三、二叉搜索树的应用模型及实例3.1. k模型宿舍门禁3.2. KV模型:中英文对应字典统计次数一、什么是二叉搜索树二叉搜索树又称为二叉排序树,是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有结点的值都小

2021-11-16 10:49:03 5036 1

原创 10 C++的IO流

IO是输入input输出output的首字母缩写形式,直观意思是计算机输入输出。文章目录一、C++IO流1.1. C++标准IO流1.2. C++文件IO流使用>>和<<对文件进行读写1.3. 将日期类写入文件并从文件中读取二、stringstream一、C++IO流和C语言的scanf、printf、fread、fwrite等IO类似,C++有自己的IO接口。C++系统实现了一个庞大的类库,这个库叫做IO流,其中ios为基类,其他类都是直接或间接派生自ios类:1.

2021-11-13 23:28:49 1362 1

原创 09 非类型模板参数、模板的特化、分离编译

文章目录一、非类型模板参数二、模板的特化2.1. 函数模板特化2.2. 类模板化全特化偏特化三、模板分离编译3.1 模板为什么不支持分离编译3.2. 模板的优缺点一、非类型模板参数模板参数有两种:1. 类型形参 2. 非类型形参。类型形参:出现在模板参数列表中,跟在class或者typename之后的参数。非类型形参:用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。比如类中需要开辟一个静态数组,但是大小未知,此时就可以使用非类型形参:另外模板参数也可以写为

2021-11-13 19:43:22 1019

原创 08 stack、queue和priority_queue的使用和模拟实现

stack和queue在STL中并没有将其划分在容器的行列,而是将其称为容器适配器,这是因为stack和queue只是对其他容器的接口进行了包装,STL中stack和queue默认使用deque容器。文章目录一、容器适配器二、stack模拟实现stack三、queue模拟实现queue四、priority_queue使用优先级队列排序日期类模拟实现priority_queue一、容器适配器容器适配器 是一个封装了序列容器的类模板,它在一般序列容器的基础上提供了一些不同的功能。 之所以称作适配器类

2021-11-11 22:17:59 1988 2

原创 07 STL中list的用法和模拟实现

文章目录一、list介绍二、常用接口2.1. 构造函数默认构造半缺省构造拷贝构造迭代器构造2.2. 增删查改的接口push_front和pop_frontpush_back和pop_backfindinserterase2.3. 迭代器begin和endrbegin和rend2.4. 元素访问方式front和back迭代器和范围for访问2.5. 大小控制函数sizeresizeemptyclear2.6. list的其他操作函数sortswapspliceremoveremove_ifuniquemerg

2021-11-10 10:47:37 2011 1

原创 KMP算法---C语言

文章目录字符串匹配BF算法代码实现BF算法的时间复杂度KMP算法求next数组next数组的代码实现next数组的优化KMP算法的代码实现KMP算法的时间复杂度字符串匹配BF算法和KMP算法都主要是为了解决字符串匹配问题,即在主串(又叫文本串)( primary string,简写为s)中寻找子串(又叫模式串) ( pattern string,简写为p),其功能类似于strstr函数,与之不同的是strstr(str1,str2)返回值是一个指针,即返回 str1字符串从str2第一次出现的位置;否

2021-11-07 20:29:00 3273 5

原创 06 STL中的vector类和模拟实现

文章目录一、vector的介绍二、常用接口2.1. 构造函数默认构造半缺省构造拷贝构造迭代器构造2.2. 元素访问方式[ ]下标访问迭代器和范围for访问2.3. 空间增长函数size()和capacity()reserve()和resize()capacity增容规则2.4. 增删查改的接口push_back和pop_backinsert和erasefind函数swap2.5. 迭代器begin和endrbegin和rend三、vector迭代器失效的问题3.1. 迭代器失效解决方法四、vector模拟实

2021-11-06 23:11:38 1001

原创 20 Linux线程池

文章目录线程池线程池的概念基于队列的线程池实现代码进程池线程池存在的价值线程安全的单例模式饿汉方式实现单例模式懒汉方式实现单例模式各自优缺点:常见的锁STL中的容器是否是线程安全读者写者问题线程池线程池的概念简单来讲,线程池就是有一堆已经创建好了的线程,初始它们都处于空闲等待状态,当有新的任务需要处理的时候,就从这个池子里面取一个空闲等待的线程来处理该任务,当处理完成了就再次把该线程放回池中,以供后面的任务使用。当池子里的线程全都处理忙碌状态时,线程池中没有可用的空闲等待线程,此时,根据需要选择创建

2021-11-01 00:20:03 955 3

空空如也

空空如也

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

TA关注的人

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