C++初阶和进阶
文章平均质量分 96
C++初阶和进阶
penguin_bark
坚持写好文
展开
-
【初阶与进阶C++详解】第二十七篇:C++的IO流(标准IO流+文件IO流+stringstream)
🏆 🌈⭐️⚡若有帮助可以【关注++】,大家一起进步!原创 2022-10-12 15:32:53 · 423 阅读 · 14 评论 -
【初阶与进阶C++详解】第二十六篇:特殊类设计(单例模式)
🏆 🌈⭐️⚡若有帮助可以【关注++】,大家一起进步!原创 2022-10-11 14:38:46 · 1051 阅读 · 16 评论 -
【初阶与进阶C++详解】第二十五篇:类型转换(static_cast+reinterpret_cast+const_cast+dynamic_cast+RTTI)
🏆 🌈⭐️⚡若有帮助可以【关注++】,大家一起进步!原创 2022-10-10 07:30:00 · 722 阅读 · 11 评论 -
【初阶与进阶C++详解】第二十四篇:智能指针(内存泄漏+RAII+auto_ptr+unique_ptr+shared_ptr+weak_ptr+定制删除器)
🏆 🌈⭐️⚡若有帮助可以【关注++】,大家一起进步!原创 2022-10-09 07:30:00 · 768 阅读 · 10 评论 -
【初阶与进阶C++详解】第二十三篇:异常(异常抛出+异常捕获+异常优缺点)
当我们出现异常的时候,如果throw了一个子类对象,可以用基类的引用来接接收,子类报错,父类捕获。项目中一般都是会定义一个继承的规范异常体系,用于处理不同的异常,这样我们就只需要捕获一个基类对象,就能捕获到所有派生类的异常对象。};int b;B bt;throw bt;} //基类捕获派生类异常 catch(A & e) {}原创 2022-10-08 09:30:00 · 2348 阅读 · 9 评论 -
【初阶与进阶C++详解】第二十二篇:C++11新特性(列表初始化+变量类型推到+右值引用+新增默认成员函数+可变模板参数+lambda表达式+包装器function_bind)
C++11是2011年更新的C++新语法,C++11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而且能提升程序员的开发效率。[capture-list]捕捉列表,用于编译器判断是否是lambda表达式,同时捕捉该表达式所在域的变量以供函数使用(parameters)参数,和函数的参数一致。如果不需要传参则可连带()一起省略mutable默认情况下捕捉列表捕捉的参数是const修饰的,该关键字的作用是取消const使其可修改。原创 2022-10-07 09:30:00 · 696 阅读 · 7 评论 -
【初阶与进阶C++详解】第二十一篇:哈希应用(位图实现应用+布隆过滤器增删查优缺点+海量数据面试题)
🏆 🌈⭐️⚡若有帮助可以【关注++】,大家一起进步!原创 2022-10-06 08:15:16 · 604 阅读 · 10 评论 -
【初阶与进阶C++详解】第二十篇:unordered_map和unordered_set(接口使用+模拟实现)
unordered_map是存储键值对((KV模型)的关联式容器,其允许通过keys快速的索引到与其对应的value。在unordered_map中,键值通常用于惟一地标识元素,而映射值是一个对象,其内容与此键关联。键和映射值的类型可能不同。在内部,unordered_map没有对按照任何特定的顺序排序(无序), 为了能在常数范围内找到key所对应的value,unordered_map将相同哈希值的键值对放在相同的桶中。原创 2022-10-05 09:22:50 · 886 阅读 · 15 评论 -
【初阶与进阶C++详解】第十九篇:哈希(哈希函数+哈希冲突+哈希表+哈希桶)
总结:线性探测缺点是数据堆积,二次探测可以减轻这种情况,闭散列最大的缺陷就是空间利用率不高。原创 2022-10-04 15:09:07 · 1437 阅读 · 11 评论 -
【初阶与进阶C++详解】第十八篇:map_set(map_set使用+multiset_multimap使用+模拟map_set)
1.set是按照一定次序存储元素的容器2.在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。set中的元素不能在容器中修改(元素总是const),但是可以从容器中插入或删除它们。3.在内部,set中的元素总是按照其内部比较对象(类型比较)所指示的特定严格弱排序准则进行排序。4.set容器通过key访问单个元素的速度通常比unordered_set容器慢,但它们允许根据顺序对子集进行直接迭代。5.set在底层是用红黑树实现的。原创 2022-10-02 14:36:44 · 928 阅读 · 2 评论 -
【初阶与进阶C++详解】第十七篇:红黑树(插入+验证+查找)
本质一样是二叉搜索树,和AVL树不同的是,增加了颜色的定义//枚举,定义颜色 enum Color {//节点类 template < class K , class V > struct RBTreeNode {原创 2022-09-29 20:17:54 · 768 阅读 · 5 评论 -
【初阶与进阶C++详解】第十六篇:AVL树-平衡搜索二叉树(定义+插入+旋转+验证)
这里节点是一个三叉链,里面存放了元素的数据和该节点此时的平衡因子。左右子树高度相同 0左子树高于右子树 -1右子树高于左子树 1//键值对 AVLTreeNode < K , V > * _left;//左子树 AVLTreeNode < K , V > * _right;//右子树 AVLTreeNode < K , V > * _parent;//父节点 // 右子树-左子树的高度差 int _bf;原创 2022-09-29 15:21:18 · 945 阅读 · 6 评论 -
【初阶与进阶C++详解】第十五篇:二叉树搜索树(操作+实现+应用KVL+性能+习题)
🏆 🌈⭐️⚡若有帮助可以【关注++】,大家一起进步!原创 2022-09-24 14:26:53 · 1073 阅读 · 10 评论 -
【初阶与进阶C++详解】第十四篇:多态(虚函数+重写(覆盖)+抽象类+单继承和多继承+override+final)
必须有基类的指针或引用调用被调用的函数必须是虚函数,其派生类必须对基类的虚函数进行重写原因1:基类和派生类都有自己的虚表,如果通过值传递的话,基类可能会拿到派生类的虚表原因2:有虚函数就有虚函数表,对象当中就会存放一个虚基表指针,通过虚基表指针指向的内容来访问对应的函数。若子类没有重写父类的虚函数内容,则子类也会调用父类的函数。下面是演示。原创 2022-09-21 20:07:58 · 778 阅读 · 10 评论 -
【初阶与进阶C++详解】第十三篇:继承(菱形继承+菱形虚拟继承+组合)
继承:是面向对象的特性之一,继承可以理解成是类级别的一个复用,允许我们在原有类的基础上进行扩展,增加新的功能。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程,继承是类设计层次的复用//用法 class [ 派生类名 ] : [ 继承方式 ] [ 基类名 ] //实例 class Person {public :int _age;};//class [派生类名] : [继承方式] [基类名] class Student : public Person {};原创 2022-09-19 15:41:51 · 1463 阅读 · 13 评论 -
【初阶与进阶C++详解】第十二篇:模板进阶(函数模板特化+类模板特化+模板分离编译)
🏆 🌈⭐️⚡若有帮助可以【关注++】,大家一起进步!原创 2022-09-16 15:58:39 · 1194 阅读 · 11 评论 -
【初阶与进阶C++详解】第十一篇:stack+queue+priority_queue+deque(仿函数)
和queue一样都是属于头文件< queue >优先级队列就是一个堆,默认是大堆,有关堆知识的传送门构造一个空的优先级队列empty( )检测优先级队列是否为空,是返回true,否则返回 falsetop( )返回优先级队列中最大(最小元素),即堆顶元素push(x)在优先级队列中插入元素xpop()删除优先级队列中最大(最小)元素,即堆顶元素while(!}原创 2022-09-15 21:06:26 · 785 阅读 · 6 评论 -
【初阶与进阶C++详解】第十篇:list(list接口介绍和使用+list模拟实现+反向迭代器和迭代器适配)
list是一个带头的双向循环链表。使用记得包含头文件。原创 2022-09-14 19:56:08 · 955 阅读 · 7 评论 -
【初阶与进阶C++详解】第九篇:vector(vector接口介绍+vector模拟实现+vector迭代器区间构造/拷贝构造/赋值)
vector()(重点)无参构造构造并初始化n个val(重点)拷贝构造使用迭代器进行初始化构造{//构造一个int类型容器// 初始化4个100// 区间初始化,将second从begin开始初始化到end//拷贝构造//迭代器使用注意//注意迭代器解引用之后对用的string还是charv1.push_back("你好!");";return 0;}为什么在的reserve实现中,使用赋值重载,而没有使用memcpy?原创 2022-09-13 10:59:48 · 900 阅读 · 9 评论 -
【初阶与进阶C++详解】第八篇:string类(标准库string类+string类模拟实现)
🏆 🌈⭐️⚡若有帮助可以【关注++】,大家一起进步!原创 2022-09-11 15:18:04 · 771 阅读 · 10 评论 -
【初阶与进阶C++详解】第七篇:模板初阶(泛型编程+函数模板)
【初阶与进阶C++详解】第一篇:C++入门知识必备【初阶与进阶C++详解】第二篇:C&&C++互相调用(创建静态库)并保护加密源文件【初阶与进阶C++详解】第三篇:类和对象上(类和this指针)【初阶与进阶C++详解】第四篇:类和对象中(类的六个默认成员函数)【初阶与进阶C++详解】第五篇:类和对象下(构造+static+友元+内部类【初阶与进阶C++详解】第六篇:C&C++内存管理(动态内存分布+内存管理+new&delete)原创 2022-06-01 11:14:01 · 383 阅读 · 1 评论 -
【初阶与进阶C++详解】第六篇:C&C++内存管理(动态内存分布+内存管理+new&delete)
【初阶与进阶C++详解】第一篇:C++入门知识必备【初阶与进阶C++详解】第二篇:C&&C++互相调用(创建静态库)并保护加密源文件【初阶与进阶C++详解】第三篇:类和对象上(类和this指针)【初阶与进阶C++详解】第四篇:类和对象中(类的六个默认成员函数)【初阶与进阶C++详解】第五篇:类和对象下(构造+static+友元+内部类...原创 2022-06-01 10:44:27 · 379 阅读 · 0 评论 -
【初阶与进阶C++详解】第五篇:类和对象下(构造+static+友元+内部类)
🏆个人主页:企鹅不叫的博客 🌈专栏C语言初阶和进阶C项目Leetcode刷题初阶数据结构与算法C++初阶和进阶《深入理解计算机操作系统》《高质量C/C++编程》Linux⭐️ 博主码云gitee链接:代码仓库地址⚡若有帮助可以【关注+点赞+收藏】,大家一起进步!💙系列文章💙【初阶与进阶C++详解】第一篇:C++入门知识必备【初阶与进阶C++详解】第二篇:C&&C++互相调用(创建静态库)并保护加密源文件【初阶与进阶C++详解】第三篇:类和对象上(类和.原创 2022-05-31 17:46:21 · 570 阅读 · 21 评论 -
【初阶与进阶C++详解】第四篇:类和对象中(类的六个默认成员函数)
🏆个人主页:企鹅不叫的博客 🌈专栏C语言初阶和进阶C项目Leetcode刷题初阶数据结构与算法C++初阶和进阶《深入理解计算机操作系统》《高质量C/C++编程》Linux⭐️ 博主码云gitee链接:代码仓库地址⚡若有帮助可以【关注+点赞+收藏】,大家一起进步!💙系列文章💙【初阶与进阶C++详解】第一篇:C++入门知识必备【初阶与进阶C++详解】第二篇:C&&C++互相调用(创建静态库)并保护加密源文件【初阶与进阶C++详解】第三篇:类和对象上(类和.原创 2022-05-24 16:33:57 · 587 阅读 · 9 评论 -
【初阶与进阶C++详解】第三篇:类和对象上(类和this指针)
🏆个人主页:企鹅不叫的博客 🌈专栏C语言初阶和进阶C项目Leetcode刷题初阶数据结构与算法C++初阶和进阶《深入理解计算机操作系统》《高质量C/C++编程》⭐️ 博主码云gitee链接:代码仓库地址⚡若有帮助可以【关注+点赞+收藏】,大家一起进步!💙系列文章💙【初阶与进阶C++详解】第一篇:C++入门知识必备【初阶与进阶C++详解】第二篇:C&&C++互相调用(创建静态库)并保护加密源文件💎一、面向对象和面向对象初步认识🧡C语言是面向过程的,.原创 2022-05-24 07:27:28 · 611 阅读 · 10 评论 -
【初阶与进阶C++详解】第二篇:C&&C++互相调用(创建静态库)并保护加密源文件
🏆个人主页:企鹅不叫的博客 🌈专栏C语言初阶和进阶C项目Leetcode刷题初阶数据结构与算法C++初阶和进阶《深入理解计算机操作系统》《高质量C/C++编程》⭐️ 博主码云gitee链接:代码仓库地址⚡若有帮助可以【关注+点赞+收藏】,大家一起进步!💙系列文章💙【初阶与进阶C++详解】第一篇:C++入门知识必备💎一、C++调用C🏆1.生成C静态库,C++调用🧡首先创建一个空项目,并且把需要调用的头文件和源文件都添加进来(注意文件都是C的),此时编译会报错(没有.原创 2022-05-12 13:48:31 · 438 阅读 · 0 评论 -
【初阶与进阶C++详解】第一篇:C++入门知识必备
⭐️本篇博客我要给大家分享一下C++入门知识。希望对大家有所帮助。⭐️ 博主码云gitee链接:码云主页前言💎一、C++关键字🧡C++又新增了31个关键字,一共63个关键字💎二、命名空间🧡在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的,....原创 2022-04-07 13:40:46 · 1947 阅读 · 37 评论