C++
文章平均质量分 85
西科陈冠希
此人不懒,什么都写
展开
-
【C++】哈希(闭散列,开散列)
哈希一级目录二级目录三级目录一级目录二级目录三级目录一级目录二级目录三级目录一级目录二级目录三级目录一级目录二级目录三级目录一级目录二级目录三级目录一级目录二级目录三级目录一级目录二级目录三级目录...原创 2021-06-07 13:51:40 · 517 阅读 · 0 评论 -
【C++】红黑树
这里写目录标题一级目录二级目录三级目录一级目录二级目录三级目录原创 2021-06-01 16:59:46 · 201 阅读 · 2 评论 -
【C++】AVL树(四种旋转方式)
AVL树AVL树概况节点的定义AVL树增删插入删除AVL树旋转单旋转右单旋转左单旋转双旋转AVL树验证及其性能AVL树概况AVL树是在搜索树的基础上机型高度上的调整防止搜索树出现单支树的情况而导致效率低下,一颗AVL树或者空树,具有以下的特点:左右子树都为AVL树左右子树高度只差绝对值不超过1此时二叉搜索树的高度是平衡的,这棵树就是AVL树。图例:节点的定义节点采用的是三叉链的方式进行创建,并且此时填入了一个平衡因子(用来控制左右子树的高度)template<class T&g原创 2021-05-25 12:32:41 · 851 阅读 · 9 评论 -
【C++】Map&&Set
Map&&Set背景知识关联式容器键值对树形结构的关联式容器MapMap基本概况Map的使用MultiSet&&MultiMapSetSet的介绍Set的使用背景知识关联式容器在C++的初期阶段,我们就已经解除了很多容器了包括:vector,list,deque这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身。关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key, value>结构的键值对,在数据检索时比原创 2021-05-24 21:30:54 · 315 阅读 · 0 评论 -
【C++】迭代器和普通自指针有什么区别(非原创)
迭代器与指针的差别:迭代器:(1)迭代器不是指针,是类模板,表现的像指针。他只是模拟了指针的一些功能,通过重载了指针的一些操作符,->,,++ --等封装了指针,是一个“可遍历STL( Standard Template Library)容器内全部或部分元素”的对象, 本质是封装了原生指针,是指针概念的一种提升(lift),提供了比指针更高级的行为,相当于一种智能指针,他可以根据不同类型的数据结构来实现不同的++,–等操作;(2)迭代器返回的是对象引用而不是对象的值,所以cout只能输出迭代器使转载 2021-05-17 13:02:03 · 208 阅读 · 0 评论 -
【C++】C/C++内存分配机制(非原创)
C语言在内存中一共分为如下几个区域,分别是:内存栈区: 存放局部变量名;内存堆区: 存放new或者malloc出来的对象;常数区: 存放局部变量或者全局变量的值;静态区: 用于存放全局变量或者静态变量;代码区:二进制代码。知道如上一些内存分配机制,有助于我们理解指针的概念。C/C++不提供垃圾回收机制,因此需要对堆中的数据进行及时销毁,防止内存泄漏,使用free和delete销毁new和malloc申请的堆内存,而栈内存是动态释放。全局变量、静态局部变量保存在全局数据区,初始化的和未初始转载 2021-05-17 12:59:15 · 414 阅读 · 0 评论 -
【C++】二叉树进阶(二叉搜索树,KV模型)
二叉树进阶(二叉搜索树)一级目录二级目录三级目录一级目录二级目录三级目录原创 2021-05-17 10:52:12 · 864 阅读 · 20 评论 -
【C++】多态
多态多态的基本概况概念多态的定义及实现多态的构成条件虚函数虚函数的重写三级目录多态的基本概况概念多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态多态的定义及实现多态的构成条件必须通过基类的指针或者引用调用虚函数被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写满足谁就调用谁虚函数虚函数:即被virtual修饰的类成员函数称为虚函数,可修饰成员函数,使其满足多态条件之一。class Person {public:原创 2021-05-11 16:29:50 · 189 阅读 · 6 评论 -
【C++】继承
继承继承的基本概念继承的概念实例继承定义格式2继承关系和访问限定符切片基本概念及其规则图例继承中的作用域图解+代码实例派生类的默认成员函数友元关系不能继承,也就是说基类友元不能访问子类私有和保护成员基类定义了static静态成员,则整个继承体系里面只有一个这样的成员。无论派生出多少个子类,都只有一个static成员实例 。复杂的菱形继承及菱形虚拟继承基本介绍问题分析及其解决方案虚拟继承(virtual)继承的总结和反思继承的基本概念面向对象三大特性:封装,继承,多态。封装本质是一种更好的管理。相对原创 2021-05-04 12:54:28 · 485 阅读 · 10 评论 -
【C++】模板进阶
模板进阶非类型模板参数类模板的特化函数模板特化类模板特化非类型模板参数非类型模板参数类模板特化三级目录非类型模板参数模板参数分类类型形参与非类型形参。类型形参即:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。非类型形参,就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。template<class T,size_t n>class test{ private: T array[n]; };int m原创 2021-04-17 15:54:54 · 215 阅读 · 0 评论 -
【C++】浅谈Stack和Queue
Stack和Queuestack的介绍和使用stack介绍stack接口使用stack模拟实现Queue的介绍和使用Queue的介绍Queue的使用Queue模拟实现stack的介绍和使用stack介绍stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。原创 2021-04-15 13:26:51 · 123 阅读 · 1 评论 -
【C++】浅谈Priority_queue和Deque<容器适配器>
priority_queue和deque背景知识(容器适配器)Priority_queue的介绍和使用Priority_queue的介绍Priority_queue的使用priority_queue的模拟实现Deque的介绍和使用Deque的介绍为什么选择deque作为stack和queue的底层默认容器缺陷背景知识(容器适配器)Priority_queue的介绍和使用Priority_queue的介绍优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。此上原创 2021-04-14 19:48:56 · 658 阅读 · 3 评论 -
【C++】浅谈list
浅谈listlist的介绍及其使用list介绍list功能使用list的构造llist iterator的使用list capacitylist element accesslist modifierslist的迭代器失效模拟实现list迭代器模拟实现代码vector与list的对比list的介绍及其使用list介绍在STL当中最主要的就是带头双向循环列表list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存原创 2021-04-08 10:35:21 · 258 阅读 · 2 评论 -
【C++】浅谈vector(迭代器失效,深浅拷贝)
浅谈vectorvector介绍及其使用vector介绍vector接口使用(实现)三级目录vector介绍及其使用vector介绍vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,原创 2021-04-05 20:26:41 · 2912 阅读 · 6 评论 -
【C++】再论string(string类,深浅拷贝,写时拷贝)
再论string(string类,深浅拷贝)string类模拟实现浅拷贝深拷贝写时拷贝string类部分代码实现string类模拟实现string类:字符串是表示字符序列的类标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作单字节字符字符串的设计特性。string类是使用char(即作为它的字符类型,使用它的默认char_traits和分配器类型(关于模板的更多信息,请参阅basic_string)。string类是basic_string模板类的一个实原创 2021-03-24 18:39:22 · 228 阅读 · 1 评论 -
【C++】浅谈string
浅谈stringString类字符串应用C语言中的字符串string类介绍string类常用接口String类字符串应用C语言中的字符串C语言中,字符串是以'\0'结尾的一些字符的集合,为操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的想而且底层空间需要用户自己管理,稍不留神可能还会越界访问。在OJ中,有关字符串的题目基本以string类的形式出现,而且在常规工作中,为了简单、方便、快捷,基本都使用string类,很少有人去使用C库中的字符串操作原创 2021-03-22 20:27:41 · 990 阅读 · 3 评论 -
【C++】浅谈STL
STL简介什么是STLSTL与C++标准库的关系STL的版本原始版本P. J版本RW版本SGI版本STL的六大容器分类STL的重要性如何学习STLSTL的缺陷什么是STLSTL(Standard Template Library)标准模板库的英文缩写,包含有计算机科学领域常用的基本数据结构和基本算法。STL与C++标准库的关系STL的版本原始版本Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、转载 2021-03-19 17:44:59 · 208 阅读 · 0 评论 -
【C++】模板初阶
模板初阶泛型模板函数模板函数模板概念函数模板格式函数模板的实例化函数模板参数的匹配原则类模板类模板的定义格式类模板的实例化泛型模板我们先看看以下的代码:void Swap(int& left, int& right){ int temp = left; left = right; right = temp;}void Swap(double& left, double& right){ double temp = left; left = right;原创 2021-03-13 09:59:21 · 117 阅读 · 0 评论 -
【C++】C/C++内存管理
C/C++内存管理C/C++内存分布简介及基本概念:题目案例C语言中动态内存管理方式C语言malloc/calloc/realloc的区别?C++new和delete操作自定义类型operator new与operator delete函数new和delete的实现原理常见面试题( malloc/free和new/delete的区别)C/C++内存分布我们先观察一下这张图在虚拟地址当中,分为了几个区段,分别是代码段 数据段 堆 栈 等一些区域,其中使用最为频繁的就是我列出的四个区域。简介及基本概念:原创 2021-03-13 09:34:56 · 221 阅读 · 0 评论 -
【C++】类和对象终篇
类和对象初始化列表Static友元友元函数友元类内部类初始化列表基本概念:初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。在我们用缺省函数或者直接用构造函数的时候,有没有想到引用和const如何定义赋值。class Date{public: Date(int year, int month, int day) : _year(year) , _month(month) , _day(day) {} privat原创 2021-03-10 17:57:33 · 103 阅读 · 0 评论 -
【C++初阶】Const成员调用规则和取地址操作符重载
Const成员const修饰类的成员函数取地址及const取地址操作符重载const修饰类的成员函数将const修饰的类成员函数称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。因为const的权限是只读只要将对象定义为const就将其权限缩小了,通过我们学习,如果需要调用的时候不能将其权限进行放大,但可以缩小的原则。掌握问题:const对象不可以调用非const成员函数(因为只读不能调用可读可写)非co原创 2021-03-04 18:08:21 · 168 阅读 · 2 评论 -
【C++】日期类
日期类日期类介绍代码分块精讲所有接口函数日期类介绍日期类成员对象: 年、月、日实现功能: 成员函数 即用四个默认成员函数就可以实现一个日期类。class Date{public: //成员函数 private: int _year; int _month; int _day;};举例:一般这样的日期计算可以利用日期类来实现。代码分块精讲因为每个月都有固定的天数或者近似的天数,所以我们可以先用全局变量将其固定下来,然后有需要改动地方再进行判原创 2021-02-05 12:55:17 · 1508 阅读 · 3 评论 -
【C++初阶】进阶类和对象
这里写目录标题一级目录二级目录三级目录一级目录二级目录三级目录原创 2021-02-03 20:41:40 · 302 阅读 · 1 评论 -
【C++初阶】浅谈类和对象
类和对象一级目录二级目录三级目录一级目录二级目录三级目录原创 2021-02-02 15:51:12 · 238 阅读 · 2 评论 -
【C++初阶】浅谈引用和内联函数
引用和内联函数引用效率比较指针和引用区别内联函数引用引用概念:引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它 引用的变量共用同一块内存空间。形式:类型& 引用变量名(对象名) = 引用实体int& ra = a;//<====定义引用类型引用的类型必须和实体类型相同。在我们使用引用的时候注意特性引用在定义时必须初始化一个变量可以有多个引用引用一旦引用一个实体,再不能引用其他实体4.当实体为加上原创 2021-02-02 15:21:12 · 2038 阅读 · 4 评论 -
【C++初阶】C++入门
C++入门C++关键字命名空间C++输入&输出缺省参数和函数重载为什么C语言不能重载(原理)C++关键字1、asm_asm是一个语句的分隔符。不能单独出现,必须接汇编指令。一组被大括号包含的指令或一对空括号。例:_asm{mov al,2mov dx,0xD007out al,dx}也可以在每个汇编指令前加_asm_asm mov al,2_asm mov dx,0xD007_asm out al,dx2、autoauto关键字会根据初始值自动推断变量的数据类型原创 2021-01-31 17:34:32 · 408 阅读 · 0 评论