![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++笔记
文章平均质量分 89
C++入门
今年依旧去年春
发布文章是记录自己的学习过程,并且方便复习,希望对大家有帮助
展开
-
特殊类的实现
在项目中总会有许多特殊的要求,而我们需要掌握一些特殊类的设计来满足需求。原创 2022-10-15 15:13:28 · 534 阅读 · 0 评论 -
实现list的简单模型
list 是一个带头的双向循环链表。原创 2022-08-26 12:00:22 · 313 阅读 · 7 评论 -
vector的简单模拟
本编文章对 vector 进行简单的模拟实现,了解 vector 的基本原理,简单实现 vector原创 2022-08-23 14:56:06 · 232 阅读 · 25 评论 -
红黑树插入的实现
前面我们已经实现了搜索二叉树树,知道了其查找规则;实现了AVL树,知道了他的旋转规则;今天这篇红黑树,是解决搜索二叉树退化成单链情况的另一种方法,以插入为重点。原创 2022-08-19 18:13:48 · 254 阅读 · 1 评论 -
AVL树的插入--旋转笔记
二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。原创 2022-08-09 00:12:19 · 360 阅读 · 30 评论 -
学会使用set和map的基本接口
上一篇笔记记录了二叉搜索树的实现,这一篇笔记介绍的 set 和 map,底层就是由二叉搜索树实现的,我们来学习他们两个的常用接口。原创 2022-08-03 10:31:34 · 293 阅读 · 26 评论 -
理解实现搜索二叉树
推荐将调用函数封装一层,这样在类外调用时,省去了传参那一步骤,若不封装,直接是public,调用遍历时涉及到传根结点的地址,地址为成员私有,不方便获取。注意,结点属于内置类型,若没有写拷贝构造的话,赋值时,默认是浅拷贝,若显示写了析构函数,会出现野指针的问题,同一个位置被析构两次。c.在它的右子树中寻找最小的结点,用它的值填补到被删除节点中,再来处理该结点的删除问题。非递归插入--之前是保留父节点,cur找到位置后,创建结点与父结点连接。插入结点时,要连接新结点和其父亲结点,那么要注意保留父亲结点。....原创 2022-07-29 11:03:23 · 207 阅读 · 3 评论 -
c++【认识多态 】
继承中我们了解到了虚拟继承,用virtual修饰继承关系,虚函数也是用virtual来修饰,被virtual修饰的类成员函数称为虚函数。在监视窗口看不到子类中的虚函数test3,但是内存不会骗人,内存的前两个指针存了从基类继承下来的两个虚函数,一个重写了一个未重写;除了这两个,还存了一个监视窗口不存在的地址,虚函数表中只会存储虚函数地址,结合我们子类中的虚函数,这个地址一定是test3无疑。多态中虚函数需要被重写(覆盖)子类中有一个跟基类完全相同的虚函数(即子类虚函数与基类虚函数的。......原创 2022-07-24 10:50:51 · 517 阅读 · 33 评论 -
C++【认识继承】
派生类继承方式基类{public{}protected};{protected};{protected};派生类拥有基类的所有数据。原创 2022-07-19 23:57:52 · 517 阅读 · 42 评论 -
初识string+简单用法(二)
这篇文章我们来接着看看string还有哪一些常用的方式:目录insert--指定位置插入插入字符(1)插入字符(2)插入字符串erase--指定位置删除删除字符删除指定字符串 swap--string类型的交换string类中的swap全局函数swapc_str--返回数组指针 find--指定位置查找查找字符查找字符串rfind--从后往前查找substr--取子串getline--获取一行pos为指定位置,n为字符个数,c代表要插入的字符 简单演示一下:指向插入一个字符,不考虑字符个数,那么原创 2022-06-30 14:40:09 · 879 阅读 · 7 评论 -
初识string+简单用法(一)
目录string是什么:c++98中string常用的构造函数1.构造一个空的类的对象--空字符串2.常量字符串初始化3.拷贝构造初始化 4.指定长度初始化。5.指定字符及其个数初始化6.取已存在对象的子串初始化string的赋值1.对象1=对象22.对象 = 字符串3. 对象 = 字符string对象的遍历方式1.[下标]遍历2.迭代器正向遍历3.迭代器反向遍历4.范围forstring的修改1.下标访问修改2.访问对象中at函数进行修改string引用传参 string对象的容量开辟容量reserve原创 2022-06-22 11:25:32 · 2723 阅读 · 30 评论 -
初识C++模板
1. 函数模板2.类模板原创 2022-06-05 15:17:17 · 412 阅读 · 41 评论 -
初识C++内存管理
目录1. new 和deletenew 一个对象初始化new 多个对象初始化delete 释放C++内存开辟释放和C中开辟释放有何区别?2. operator new与operator delete函数2.1 operator new和malloc相同点和malloc不同点new底层原理2.2operator delete2.3 operator new与operator delete的类专属重载3.定位new表达式使用格式定位ne...原创 2022-05-29 20:59:22 · 808 阅读 · 30 评论 -
类与对象(三)
1. 初始化列表以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。样例:class Day{public: Day(int year=2001,int month=4) :_year(year) , _month(month) {}private: int _year; int _month;};功能:是对象成员进行定义的地方,对对象成员进行初始化。构造函数也能完成对对象成员的定义,在定..原创 2022-05-27 00:52:01 · 424 阅读 · 20 评论 -
运算符重载之自定义类型的流提取插入
在我们刚开始学c++时,cin 提取和 cout 插入 ,可以直接识别类型,这个规则是需要我们记住的,方便我们的输入和输出那么他们是怎么实现的呢?为何原创 2022-05-24 17:17:04 · 392 阅读 · 25 评论 -
类与对象(二)续
在《类与对象(二)》中提到了类会生成六个默认成员函数,并且介绍了前四个默认成员函数,本篇来介绍最后两个默认成员函数和const修饰类的成员函数。1. const修饰类的成员函数const修饰类成员函数,实际修饰该成员函数隐含的 this 指针,被修饰的 this 指针中的成员不能再被修改。举例:没有被const修饰的类的成员函数:再来看一个函数:d.Print() 经过编译器处理为 d.Print(&d) , 而函数 func 的形参类型是 const Date原创 2022-05-23 16:56:54 · 197 阅读 · 8 评论 -
日期类的实现
上一篇《类和对象二》中讲到了重载运算符。本篇文章用重载运算符的使用方法,实现日期类,就是写一个简单的日期计算器,精华在于运算符的重载和对已经定义好的符号的复用。我们将声明放在类中,定义放在另一个源文件中,实现声明和定义的分离。目录1. 两个日期相互比较1.1 ‘==’重载声明定义注意1.2 ‘<’重载声明定义1.3 ‘<=’重载声明用复用的定义1.4 ‘>’重载声明定义1.5 ‘>=’重载声明定义1...原创 2022-05-22 18:42:06 · 733 阅读 · 10 评论 -
类与对象(二)
在空类中,不是什么都没有的,会默认生成成员函数;本篇文章记录的是在空类中自动生成的六个默认函数成员。以日期类为例:class Date{public: void DateInit(int year, int month, int day) { _year = year; _month = month; _day = day; } void Print() { cout << _year << "-" << _month <原创 2022-05-19 18:31:33 · 369 阅读 · 32 评论 -
类与对象(一)
一、面向过程和面向对象什么是面向过程?要完成一件事,关注的是过程,分析出求解问题的步骤,一步一步按照顺序完成,通过函数调用逐步解决问题。什么是面向对象?完成一件事,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。...原创 2022-05-15 19:20:38 · 571 阅读 · 35 评论 -
C++入门(三)引用,内联,auto+nullptr
一、引用定义引用是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。与之前学过的取地址共用符号:&在类型前加&举例特性1. 引用在定义时必须初始化2. 一个变量可以有多个引用 如举例所示3. 引用一旦引用一个实体,再不能引用其他实体常引用在变量前 或 引用前加 const ,使其变成常量后加引用或变成常引用取别名原则对原引用的变量,权限只能缩小或...原创 2022-05-12 12:31:43 · 722 阅读 · 26 评论 -
c++入门(二)函数重载 --- c和c++中相互调用对方的静态库
函数重载:总结:在c中,链接时,c中的函数名是直接以我们给的函数名确定的而在c++中,函数名的命名规则是_Z + 函数名 +参数类型的首字母(如果是指针类型的参数,前面类型首字母的前面回有P)即使函数名相同的两个函数,只要符合重载条件,在c++中调用不会发生冲突因为函数名命名规则不同,c不支持函数重载。创建一个C的静态库例子:将一个栈封装成一个静态库。将已经写好的栈的声明和定义在VS中打开,此时没有主函数,运行时编译器将项目当成一个可执行文件,进行运行,会报错原创 2022-05-04 12:08:42 · 1197 阅读 · 34 评论 -
C++入门(一)
初识C++原创 2022-05-02 00:19:32 · 2584 阅读 · 28 评论