C++
文章平均质量分 90
郭KK
这个作者很懒,什么都没留下…
展开
-
智能指针- 原来如此
文章目录为什么需要智能指针内存泄漏什么是内存泄漏以及内存泄漏的危害内存泄漏分类智能指针的使用及原理RAII几种智能指针auto_ptrunique_ptrshared_ptrweak_ptr为什么需要智能指针当程序员手动malloc或new出来的空间没有手动释放。存在异常安全问题。如果new和delete之间如果存在抛异常,那么还是有内存泄漏。这种问题就叫异常安全。内存泄漏什么是内存泄漏以及内存泄漏的危害什么是内存泄漏: 内存泄漏是指,在内存不使用的情况下,由于疏忽或错原创 2021-08-04 13:57:04 · 224 阅读 · 0 评论 -
左值引用与右值引用
左值与右值概念左值与右值是C语言中的概念,但是C标准并没有给出严格的区分方式,一般认为:可以放在 = 左边的(一般是可以修改的值) 或者 能取地址的称为左值, 只能放在 = 右边(一般是不可修改的一些值),或者不能取地址的值称为右值。(如:常量、临时变量、表达式的返回值)具体解释:普通类型的变量,因为有名字,可以取地址,都认为是左值。const修饰的常量,不可修改,只读类型的,理论上应该按照右值对待,但因为其是可以取地址的,C++1认为其是左值。如果表达式的运行结果是一个临时变量或对象,认为是原创 2021-07-21 20:08:39 · 562 阅读 · 1 评论 -
高并发内存池
什么是内存池??内存池是一种动态内存分配与管理技术。通常情况下,程序员习惯直接使用new、delete、malloc、free等API申请分配和释放内存,这样导致的后果是:当程序长时间运行时,由于申请内存块的大小不定,频繁使用会造成大量的内存碎片从而降低程序和操作系统大的性能。内存池则是在真正使用内存之前,先申请分配一大块内存(内存池)留作备用,当程序员申请内存时,从池中取出一块动态分配,当释放时,将要释放的内存再放入池中,再次申请时可以从池中再取出来使用,放回后尽量与周边的空闲内存块合并。若内存池不够时原创 2021-07-14 17:34:05 · 249 阅读 · 0 评论 -
红黑树其实也简单
文章目录红黑树的概念红黑树的性质红黑树节点的定义红黑树的插入操作红黑树的概念红黑树:是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。红黑树的性质1. 根节点必须是黑色的。2. 每个节点不是黑色就是红色。3. 没有连续的红色节点。(如果一个节点是红色的,则它的两个孩子结点是黑色的)4. 每条路径上的黑色节点的数目是相同的。5. 所以的原创 2021-06-02 09:54:00 · 772 阅读 · 0 评论 -
类和对象基本了解
类和对象1.类的定义2.类的作用域3.类的访问限定符和封装3.1访问限定符3.2封装4.类成员函数的this指针1.类的定义class className{// 类体:由成员函数和成员变量组成}; // 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号。类中的元素称为类的成员:类中的数据称为类的属性或者成员变量; 类中的函数称为类的方法或者成员函数。类的两种定义方式:声明和定义全部放在类体中,需要注意:成员函数如原创 2021-02-22 11:39:14 · 138 阅读 · 0 评论 -
AVL树
AVL树概念AVL树节点的定义AVL树的插入AVL树的旋转概念由于二叉搜索树的缺陷(如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下),两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis便在1962年发明了一种解决上述问题的方法: 当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整),即可降低树的高度,从而减少平均搜索长度。首先要明确的一点是,AVL树也是一颗二叉搜索树了解二原创 2021-05-26 16:05:35 · 161 阅读 · 2 评论 -
map和set
文章目录1. 关联式容器2. 键值对 (KV模型)3. 树形结构的关联式容器3.1 set介绍使用3.2 map1. 关联式容器像我们所了解的STL中的部分容器,比如:vector、list、dequeue、forward_list(c++11)等这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身。那么什么又是关联式容器呢??两者之间又有什么区别呢??关联式容器也是用来存储数据的, 和序列性容器不一样的是,关联式容器是非线性的树结构,更准确的说是二叉树结构。各元素之间没有严原创 2021-05-25 12:20:17 · 224 阅读 · 4 评论 -
二叉搜索树
文章目录概念二叉搜索树的操作查找插入模拟实现应用概念二叉搜索树也叫二叉排序树(其中序遍历是有序的),它具有以下性质:在左子树不为空的情况下,左子树上的所有节点的值都小于根节点的值右子树不为空的情况下,右子树上所有节点的值都大于根节点的值它的左右子树也分别是二叉搜索树就该二叉搜索树而言我们来看一看它中序遍历(访左,访根,访右)的结果:[0,1,2,3,4,5,6,7,8,9]二叉搜索树的操作查找由于二叉搜索树的性质,它的查找较为简单:它的查找在不同情况下效率还不一样:插入模拟原创 2021-05-18 15:14:41 · 386 阅读 · 0 评论 -
C++里的多态
文章目录什么是多态静态多态动态多态定义和简单实现构成条件抽象类定义和特点接口继承域实现继承多态的原理虚函数表什么是多态多态顾名思义就是同一事物在不同的情况下表现出不同的形态。例如:买票这个行为,当普通人购票时,买的是全价票,学生购票时买的是优惠票。多态分静态多态和动态多态。我们重点讲动态多态。静态多态静态多态是在程序编译期间就确定了程序行为,比如:函数重载,泛型编程。下面简单理解一下: (注:本文中的代码都是在vs2013下完成的)int Add(int x, int y){原创 2021-05-10 20:40:27 · 169 阅读 · 4 评论 -
初识C++
文章目录1.C++关键字2.命名空间2.1命名空间的定义2.2命名空间的使用3.C++的输入&输出4.缺省参数4.1缺省参数概念4.2缺省参数分类5.函数重载5.1函数重载概念5.2 为什么c语言不支持函数重载,而C++支持?1.C++关键字C++总计63个关键字,C语言32个关键字2.命名空间2.1命名空间的定义在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地原创 2021-01-31 18:55:51 · 127 阅读 · 0 评论 -
类和对象
类和对象1.再谈构造函数1.1构造函数题赋值1.2初始化列表1.3 explicit关键字2.友元2.1概述2.2友元函数2.3友元类3.static成员3.1概念3.2特性4.内部类4.1概念及特性1.再谈构造函数1.1构造函数题赋值在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值.class Date{public: Date(int year, int month, int day) { _year = year; _month = month;原创 2021-03-10 22:35:41 · 106 阅读 · 0 评论 -
C++里面的继承
C++中的继承1.什么是继承以及怎样继承1.1 概念1.2 继承格式与方式2. 基类和派生类对象赋值转换3. 继承中的作用域4. 派生类的默认成员函数5. 继承与友元,继承与静态成员6. 菱形继承和菱形虚拟继承7. 组合和继承区别1.什么是继承以及怎样继承1.1 概念继承机制是面型对象程序设计使代码复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称为派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用原创 2021-05-01 15:17:58 · 609 阅读 · 3 评论