C++修炼之路
文章平均质量分 95
掌握C++的坑,以及高阶数据结构
麻辣韭菜
一位有梦想的码农
展开
-
C++ 11 【线程库】【包装器】
在C++11之前由于没有线程库,这就导致了在Linux能跑的代码,在windows下就不行,反之也是一样。导致了代码的可移植性差!!!而C++11之后出现了线程库,并行编译时不需要依赖第三方库。而且在原子操作中还引入了原子类的概念。一、thread类的简单介绍。原创 2024-06-08 18:50:35 · 862 阅读 · 0 评论 -
C++ 11 【可变参数模板】【lambda】
上篇重点讲解了右值引用,本篇的可变参数模板和Lambda也是11里面非常有用的。如果学会这两个以后编程会感觉非常的爽。废话不多说直接开始!!!一、新的类功能1.1默认成员函数——移动构造、移动赋值移动构造和移动赋值。针对移动构造函数和移动赋值运算符重载有一些需要注意的点如下:如果你没有自己实现移动构造函数,且没有实现析构函数 、拷贝构造、拷贝赋值重载中的任意一个。那么编译器会自动生成一个默认移动构造。默认生成的移动构造函数,对于内置类。原创 2024-06-06 15:43:59 · 664 阅读 · 0 评论 -
C++ 11【右值引用】
目录1.C++ 11 简介2. 统一的列表初始化2.1 {}初始化3.1 auto4.右值引用和移动语义4.2 左值引用与右值引用比较4.3 右值引用使用场景和意义4.4 右值引用引用左值及其一些更深入的使用场景分析5.完美转化5.1模板中的&& 万能引用(引用折叠)C++11是C++编程语言的一个主要更新版本,它在2011年被国际标准化组织(ISO)正式批准为ISO/IEC 14882:2011标准。这个版本引入了许多新特性和改进,旨在提高语言的表达能力、性能和易用性。自动类型推断(auto关键字)原创 2024-06-06 15:43:43 · 1018 阅读 · 0 评论 -
C++ map和set模拟实现
前面我们实现了红黑树,本篇就讲map和set的底层是怎么用红黑树来进行封装的!!!我们要模拟实现map和set需要改造之前的红黑树,因为set只有一个K,而我们的红黑树模板参数是2个一个T和一个V。原创 2024-04-20 17:38:17 · 818 阅读 · 0 评论 -
C++ 红黑树模拟实现
前面我们实现了AVL树,发明AVL树的人是天才,那发明红黑树的人就是天才中天才。AVL由于加入平衡因子,所以对树的平衡过于严格。这就导致了频繁的旋转。从而增加时间复杂度。这也是为什么map和set底层的封装没有用AVL树,而是用的红黑树!!!原创 2024-04-14 11:57:16 · 844 阅读 · 0 评论 -
C++ AVL树底层实现原理
这篇从了解到使用map,map也是搜索二叉树,因为搜索二叉树会出现歪脖子树的情况,本篇就讲如何解决歪脖子树。记住口令 旋转 旋转 旋转!!!重要的事说三边。搜索二叉树加入平衡因子 旋转 就成了传说之中的AVL树AVL树1.1 AVL树的概念二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数G.M.Adelson-Velskii和E.M.Landis在1962。原创 2024-04-09 09:16:43 · 772 阅读 · 1 评论 -
C++ set&&map
C++二叉搜索树最后简单的讲解了搜索二叉树的应用场景,而本篇的set对应的就是K模型,map对应KV模型。set是C++标准模板库(STL)中的一个关联容器,它包含唯一元素的集合。以下是关于set的一些基本介绍:set中的元素都是唯一的,重复的元素在插入时会被自动忽略。set中的元素默认按照升序排序。如果需要自定义排序规则,可以通过提供比较函数或重载运算符来实现。set支持前向迭代器,可以用来遍历容器中的元素。insert():向set中插入一个元素。find():查找一个元素是否存在于set中。原创 2024-04-05 14:54:33 · 1142 阅读 · 3 评论 -
C++ 二叉树OJ题
C++二叉搜索树这篇讲解了搜索二叉树的实现的,本篇从实战出发,让大家更好的掌握和理解二叉树的!!!!1. 二叉树创建字符串。606. 根据二叉树创建字符串 - 力扣(LeetCode)找出规律,我们就好办了 直接代码演示。public:if(root == nullptr) //根为空 直接返回空串!return "";//外面解释这个函数//结合 刚才的3点总结 左右都为空不加括号,左为空是要加括号的。str += '(';str += ')';str += '(';原创 2024-03-31 14:47:48 · 1199 阅读 · 4 评论 -
C++二叉搜索树
观察上图,我们可以发现根节点7的左边节点是小于右边的节点,左子树的上所有的节点都小于根节点,右子树的所有节点都大于根节点。而且根的左右子树也都是搜索二叉树二.二叉搜索树循环操作1.二叉搜索树的插入先定义出二叉搜索树结构//定义二叉树节点K _key;,_key(key){}public:private:二叉搜索树插入实现方法↓public://二叉搜索树插入实现if (_root == nullptr) //第一次就不用说了。原创 2024-03-24 23:09:17 · 1007 阅读 · 0 评论 -
C++菱形继承_多态
继承还有菱形继承没有解决,会在这篇解决菱形继承。本篇重点多态,多态在面试和笔试经常考,重点中的重点。原创 2024-03-01 23:16:36 · 748 阅读 · 0 评论 -
C++继承
继承?继承老爸的财产。1.继承的概念及定义2.基类和派生类对象赋值转换3.继承中的作用域4.派生类的默认成员函数5.继承与友元6.继承与静态成员2.继承的概念及定义1.1继承的概念继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。原创 2024-02-12 23:22:45 · 655 阅读 · 1 评论 -
C&C++内存管理
表达式在实际中一般是配合内存池使用。因为内存池分配出的内存没有初始化,所以如。这是是3个版本的介绍。建议自己手动翻译 ,鄙人网页自动翻译吃过亏。映射方式,用于装载一个共享的动态内存库。用于程序运行时动态内存分配,堆是可以上增长的。上面这段代码 这些变量初始化是放在什么地方的?的定义表达式进行显示调构造函数进行初始化。创建共享共享内存,做进程间通信。返回值等等,栈是向下增长的。果是自定义类型的对象,需要使用。,注意:匹配起来使用。全局函数来申请空间,全局函数来释放空间。[]的可以自行查看。原创 2024-01-21 20:28:15 · 837 阅读 · 1 评论 -
C++类和对象(下)
定义时不添加static关键字,类中只是声明3.类静态成员即可用。原创 2023-12-25 19:58:54 · 876 阅读 · 1 评论 -
类和对象中(中)
虽然编译器会帮我们生产一个默认构造函数,但是祖师爷在设计初时,没有考虑到内置类型。是特殊的成员函数,需要注意的是,构造函数虽然名称叫构造,但是构造函数的主要任。空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下。默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。默认构造函数只会对自定义类型进行处理,对内置类型不做处理。如果一个类中什么成员都没有,简称为空类。上图 我们看到d1初始化年月日是随机值。所以大部分的类需要我们写构造函数。原创 2023-12-21 21:34:58 · 428 阅读 · 0 评论 -
C++类和对象
class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。类的两种定义方式:1.声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。这样看这个定义的类是不是很怪谁是谁的year?为了方便区分我们可以在私人成员变量中加_。原创 2023-11-28 19:53:25 · 316 阅读 · 0 评论 -
C++入门
为函数的。原创 2023-11-18 20:53:55 · 46 阅读 · 1 评论