
C++
文章平均质量分 86
C++
无空念
这个作者很懒,什么都没留下…
展开
-
C++命名空间, 缺省参数和函数重载
若没有指定实参, 则采用该形参的缺省参数.原创 2024-10-25 13:00:00 · 322 阅读 · 0 评论 -
C++类和对象 - 基础
在C++中struct升级成了类.新增加了很多功能, 在C++中 struct 不仅能定义成员变量,还能定义成员函数.在C++中定义类更喜欢使用class关键字.class和struct之间的区别只有访问限定修饰符的区别,struct默认是public,class默认是private。原创 2024-11-11 20:40:28 · 675 阅读 · 0 评论 -
C++引用
一个对象可以有多个引用.引用的类型需要和被引用的对象类型相同int a = 10;int& b;// 在定义是没有初始化, 会报错int a1 = a;int a2 = a;int a3 = a;// a1, a2, a3 都是 a 的引用, 修改三个中任意一个,// 另外两个和 a 都会改变// 这是不可以的, 类型一定要匹配。原创 2024-10-26 23:22:20 · 835 阅读 · 0 评论 -
C++内存管理 - new/delete
int main()// 为类型 A 实例化出一个对象, 并将对象中的 _a 初始化为10, 返回对象的地址return 0;int main()// 创建了 5 个 A 类型对象, 前三个初始化为 1, 2, 3 后两个默认初始化为0return 0;原创 2024-11-18 23:15:32 · 1930 阅读 · 0 评论 -
C++ - 模板
/ 属性, 方法// 同样可以有多个模板函数可以看到, 和函数模板的定义是一样的, 在定义语句的前面加上 template<class T>.public:_size(0){}private:T* _data;int _size;原创 2024-11-19 22:08:36 · 835 阅读 · 0 评论 -
C++ STL - String
C++的STL是“Standard Template Library”(标准模板库)的缩写,它是C++语言中一组预先定义的模板类和函数的集合,用于提供常见的数据结构和算法的实现。原创 2024-11-22 22:59:39 · 922 阅读 · 0 评论 -
C++类和对象 - 拷贝构造, 赋值重载
拷贝构造作用:一个已经存在的对象去初始化另一个要创建的对象日常写代码中会出现如下场景:在上面的代码中, 我们想要使用一个已存在的对象去初始化另一个对象, 此时拷贝构造的作用就体现出来了.原创 2024-11-14 12:40:50 · 1557 阅读 · 0 评论 -
C++类和对象 - 构造, 析构函数
我们之前使用了C语言实现了一些数据结构, 比如: 栈和队列.我们经常会忘记写或者调用函数去初始化, 然后在使用完之后,忘记调用函数去销毁开辟的空间, 导致内存泄漏.C++ 为了解决忘记调用这些函数导致程序出错的问题, 引入了构造和析构函数.原创 2024-11-13 13:15:00 · 1002 阅读 · 0 评论 -
C++ - 模板特化, 非类型模板参数
定义模板时模板的参数可以不是类型, 还可以是常量.在上面的代码中实现了一个静态的数组类.这个数组的大小就是由 size_t N 来决定的.原创 2024-11-20 22:30:19 · 223 阅读 · 0 评论 -
C++ - AVL (二叉平衡搜索树) 解析
上一篇博客中讲解了二叉搜索树:我们了解到, 二叉搜索树的最坏时间复杂度为 O(N). (插入的顺序是有序的)所以在实际中, 直接使用二叉搜索树的情况很少.那么为了解决二叉搜索树这种最坏情况, 就有大佬提出了 AVL 树.AVL 树又称为 二叉平衡搜索树, 可以看到, 多了两个字 "平衡".那么平衡是什么意思:之前的二叉搜索树在插入顺序是有序的情况下, 会形成一个链表的结构, 从而导致查找的时间复杂度变为 O(N).原创 2024-12-01 17:36:36 · 684 阅读 · 0 评论 -
C++ - 多态, 虚函数讲解
多态: 通俗的说就是不同的人, 完成相同的任务会产生不同的结果.如: 学期结束开始放假了, 我们会买回家的票,老师买的是全价票, 而我们是学生, 学生买票是有优惠的.C++ 中多态又分为静态多态和动态多态:静态多态 (又称为编译时多态): 主要是依靠函数重载和模板来实现的.动态多态 (又称为运行时多态): 主要是依靠继承和虚函数来实现的那么这里讲的是动态多态, 即由继承和虚函数实现的多态.原创 2024-12-04 21:40:23 · 976 阅读 · 0 评论 -
C++ - 二叉搜索树讲解
因为如果随意修改二叉搜索树节点的值, 那么就有可能会导致, 这棵树不再满足二叉搜索树的条件.这两个选择方法, 选择出来的要交换的节点的值, 都是最接近 本节点值的 节点.和只有左孩子相同, 删除本节点, 右孩子连接到本节点的父节点上。1. 本节点右子树中的最小值的那个节点 (即右子树的最左节点)2. 本节点左子树中的最大值的那个节点 (左子树的最右节点)从根节点开始, 如果插入的值小于节点值, 那么向左走,将本节点删除后, 将节点的左孩子连接到本节点的父节点上。如果插入的值大于节点值, 那么向右走,原创 2024-11-30 22:48:46 · 713 阅读 · 0 评论 -
C++ - priority_queue讲解, 适配器 和 仿函数
之前了解 stack 和 queue 的使用时, 我们会发现, 他们的构造函数都非常简单.但是, 当我们在官网上 () 查找 stack 或 queue 时, 会发现他们的模板参数不止一个.我们可以观察到, stack 和 queue 除了一个 T 模板参数, 还有一个 Container 模板参数, 而且这个模板参数还有默认值 deque<T>.1. 那么这个 Container 这个模板参数是什么?2. deque<T> 又是个什么?原创 2024-11-28 22:03:36 · 609 阅读 · 0 评论 -
C++ - map,set
map 和 set 是C++ STL 中提供的容器, map 和 set 的底层是基于红黑树来实现的.set 是一个包含唯一元素 (key) 的集合,不允许有重复的元素.map 是一个键值对 (key - value) 的集合, 每一个键 (key) 都是唯一的.map 的key - value键值对是通过 pair 来实现的.可以观察到, map 比 set 多一个模板参数.set 只有 T, 而 map 有key 和 T.原创 2024-12-06 09:22:12 · 996 阅读 · 0 评论 -
C++ STL - vector/list讲解及迭代器失效
vector 是一个动态数组.原创 2024-11-23 21:51:28 · 943 阅读 · 0 评论 -
C++ STL - stack, queue 讲解
stack 是 STL 提供的容器. 实现的数据结构是栈.原创 2024-11-26 20:35:49 · 284 阅读 · 0 评论 -
C++ - 红黑树解析
红黑树也是一颗二叉搜索树, 红黑树不像 AVL 树一样, 对于树的高度要求的非常严格.在 AVL 树中, 树的高度要求很严格, 对于查找的的效率确实有很大的提高,但是, 相应的对于树的调整, 发生旋转的次数也会变得很高. 旋转也需要付出成本.所以在红黑树中, 对于树的高度要求放宽了一些.通过上面的五个性质可以得到一个结论:红黑树的最长路径和最短路径之间最多相差一倍.原创 2024-12-04 18:23:20 · 716 阅读 · 0 评论 -
C++ - 继承
在子类成员函数中,可以使用 基类::基类成员 访问.原创 2024-12-03 21:24:27 · 955 阅读 · 0 评论