
C++学习—进步之路
文章平均质量分 97
C++的学习
IsLand1314~
热衷于在c++,Java领域学习,喜欢用博客来记录自己学习的点点滴滴,希望我的博客可以给你带来一些帮助。
笔记记录 gitee网站:https://gitee.com/island0920/projects
展开
-
【C++11】 函数适配:深入理解std::bind与占位符
📃个人主页:island1314。原创 2025-03-16 17:20:50 · 1686 阅读 · 0 评论 -
【C++学习】 IO 流揭秘:高效数据读写的最佳实践
C++ 的 I/O 流系统包括输入流、输出流和双向流。输入流(如 std::cin、std::ifstream)用于读取数据,输出流(如 std::cout、std::ofstream)用于写入数据,而 双向流(如 std::fstream、std::stringstream)则支持同时读写操作。标准错误流(std::cerr)和标准日志流(std::clog)用于错误报告和日志记录。这些流对象提供了强大的数据处理功能,是 C++ 编程的核心组件之一。原创 2024-09-17 07:54:26 · 2208 阅读 · 98 评论 -
【C++高阶】哈希—— 位图 | 布隆过滤器 | 哈希切分
✨🌏📃。原创 2024-08-16 17:28:02 · 1885 阅读 · 81 评论 -
【C++高阶】:特殊类设计和四种类型转换
✨ 人生如梦,朝露夕花,宛若泡影 🌏📃个人主页:island1314🔥个人专栏:C++学习⛺️ 欢迎关注:👍点赞 👂🏽留言 😍收藏 💞 💞 💞 特殊类设计和四种类型转换:1. 特殊类设计1.1 无法被拷贝的类1.1.1 C++98的做法:1.1.2 C++11的做法:1.2 只能在堆上创建对象的类1.3 只能在栈上创建对象的类🍉1.3.1 实现一:🥝1.3.2 实原创 2024-08-11 17:55:55 · 1866 阅读 · 40 评论 -
【C++高阶】:自定义删除器的全面探索
这篇文章主要是对之前智能指针的一个小小的补充,没有看过智能指针的读者朋友们,可以参考下下面这篇博客【C++高阶】:智能指针的全面解析-优快云博客int main()// 创建一个shared_ptr,管理一个打开的文件// 使用fclose作为定制删除器"test.txt"// 创建一个shared_ptr,管理一个打开的文件 // 使用fclose作为定制删除器 std::shared_ptr file (fopen( "test.txt" , "w" ), fclose);原创 2024-08-07 21:34:03 · 1693 阅读 · 101 评论 -
【C++高阶】:智能指针的全面解析
以上就是智能指针的全部内容啦,后面我会单独出一篇关于自定义删除器的博客,敬请期待咯!!!💞 💞 💞!!祝大家天天开心。原创 2024-08-07 20:49:25 · 1778 阅读 · 93 评论 -
【C++高阶】:异常详解
✨惊起归鸿不成字,辞柯落叶最知秋🌏📃。原创 2024-08-04 21:15:16 · 1287 阅读 · 100 评论 -
【C++高阶】:C++11的深度解析下
【C++高阶】:C++11的深度解析上-优快云博客以上就是C++11的全部内容啦!!祝大家天天顺心如意。原创 2024-08-01 16:29:27 · 2698 阅读 · 86 评论 -
【C++高阶】:C++11的深度解析上
相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。相比较而言,C++11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而且能提升程序员的开发效率,公司实际项目开发中也用得比较多,所以我们要作为一个重点去学习。原创 2024-07-30 22:07:09 · 2142 阅读 · 89 评论 -
【C++高阶】哈希的应用(封装unordered_map和unordered_set)
【C++高阶】哈希函数底层原理全面探索和深度解析-优快云博客之前我们已经学习了如何手搓哈希,现在让我们来对哈希进行改造,并且封装成unordered_map和unordered_set。注意:本篇我们采用开散列的方式来模拟实现unordered//转成数字,把key// 特化template<>hash *= 31;hash += e;namespace hash_bucket //哈希桶-链式template<class T> //用一个值来确定底层存的是什么*/原创 2024-07-30 16:58:32 · 943 阅读 · 39 评论 -
【C++高阶】哈希函数底层原理全面探索和深度解析
本文旨在揭开哈希算法的神秘面纱,带领大家深入探测哈希的底层世界。从哈希函数的内部逻辑出发,探讨其如何通过一系列的数学变换与位操作,将任意长度的输入数据映射为固定长度的输出值。同时逐步探索哈希表的数据结构冲突解决策略以及内存管理技巧。通过详细剖析哈希函数的内部逻辑与实现方式,我们将揭示那些隐藏在高效与安全背后的智慧与努力return//转成数字,把key// 特化template<>{ // 避免因为顺序不一样而产生一样的值 BKDR// 避免 abc,acb同值不同意hash *= 31。原创 2024-07-28 15:51:09 · 1445 阅读 · 59 评论 -
【C++】红黑树的应用(封装map和set)
【C++】红黑树的全面探索和深度解析-优快云博客之前我们已经学习了如何手搓一棵红黑树,现在让我们来对红黑树进行改造,并且封装成map和set.map 和 set 的底层本质上还是复用,通过对红黑树的改造,再分别套上一层 map 和 set 的 “壳子”,以达到 “一树二用” 的目的。在改造红黑树的过程中,我们应该就解决以下几个需要重点解决的问题:📒(1) 对红黑树节点的改造。原创 2024-07-28 11:35:16 · 1906 阅读 · 0 评论 -
【C++】红黑树的全面探索和深度解析
RED,BLACK:_kv(kv){}public:~RBTree()//根节点默认为黑色// 新增节点。颜色红色给红色elsewhile (parent && parent->_col == RED) //当父亲节点为红色,则出现了连续的红色,不符合条件// g// p uif (uncle && uncle->_col == RED) //叔叔存在并且为红//往上面走else。原创 2024-07-24 20:20:11 · 1320 阅读 · 78 评论 -
【C++高阶】:AVL树的全面探索和深度学习
前面我们学到了二叉搜索树,【C++高阶】二叉搜索树的全面解析与高效实现虽然二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年发明了一种解决上述问题的方法,即AVL树,它以其独特的平衡机制和高效的搜索性能,成为了一颗璀璨的明星。原创 2024-07-20 10:16:43 · 1673 阅读 · 0 评论 -
【C++高阶】高效数据结构的探索(map&&set)
【C++深度学习】二叉搜索树的全面解析与高效实现-优快云博客通过之前对二叉搜索树的学习,我相信大家对set和map也应该有所了解,set就类似于二叉搜索树的K模型,而map就类似于二叉搜索树的KV模型,下面就让我们进入对其的了解吧,踏上这神秘的学习之旅这里推荐两个题目让大家练习一下,方便巩固set与map前K个高频单词两个数组的交集%5Clog%20N。原创 2024-07-18 17:02:46 · 1519 阅读 · 0 评论 -
【C++高阶】二叉搜索树的全面解析与高效实现
二叉搜索树的深度解析原创 2024-07-18 15:46:19 · 1567 阅读 · 0 评论 -
【C++高阶】多态(概念&&虚函数&&抽象类)
在编程的广阔领域中,多态(Polymorphism) 无疑是一个令人着迷且至关重要的概念。它不仅是面向对象编程(OOP)的三大特性之一(与封装和继承并列)也是实现代码复用、提高软件灵活性和可扩展性的关键所在。当我们谈论C++这门强大的编程语言时,多态更是一个不可或缺的话题需要声明的原创 2024-07-10 23:00:30 · 2256 阅读 · 0 评论 -
【C++深度探索】继承机制详解(友元&&静态&&菱形继承&&虚拟继承&&组合)
点击跳转到文章【C++深度探索】:继承(定义&&赋值兼容转换&&作用域&&派生类的默认成员函数)前面我们已经学习了继承前面部分的相关知识,本文主要介绍1、很多人说C++语法复杂,其实多继承就是一个体现。有了多继承,就存在菱形继承,有了菱形继承就有菱形虚拟继承,底层实现就很复杂。所以一般不建议设计出多继承,一定不要设计出菱形继承。否则在复杂度及性能上都有问题。2、多继承可以认为是C++的缺陷之一,很多后来的OO语言都没有多继承,如Java。3、public继承是一种is-a的关系。原创 2024-07-09 22:20:24 · 988 阅读 · 0 评论 -
【C++深度探索】:继承(定义&&赋值兼容转换&&作用域&&派生类的默认成员函数)
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类(或子类)。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。public:protected://名字//年龄protected:int _stuid;// 学号protected:int _jobid;// 工号。原创 2024-07-07 14:53:47 · 1389 阅读 · 0 评论 -
【C++/STL】模板进阶(非类型模板&&类模板打印&&特化&&分离编译)
一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。(1)优点1、模板复用了代码,但本质上编译器会帮我们生成实例化的代码,只是减少了人工的消耗,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生2、增强了代码的灵活性(2)缺陷1、模板会导致代码膨胀问题,也会导致编译时间变长2、出现模板编译错误时,错误信息非常凌乱,不易定位错误。原创 2024-07-07 14:54:01 · 966 阅读 · 0 评论 -
【C++/STL】优先级队列的介绍与模拟实现&&仿函数
点击跳转到文章【C++/STL】stack/queue的使用及底层剖析&&双端队列&&容器适配器前面我们已经学习了list容器的相关知识,本文主要介绍STL中另外两种重要的结构,stack和queue。但是在STL中这两者并没有划分在容器范围内,而是将其称为容器适配器。注意:使用优先级队列要包含头文件< queue >。优先级队列是一种特殊的队列,其中的元素都被赋予了优先级。元素的优先级决定了它们在队列中的顺序。在优先级队列中,元素按照优先级从高到低的顺序出队列。原创 2024-07-06 21:01:36 · 813 阅读 · 0 评论 -
【C++/STL】stack/queue的使用及底层剖析&&双端队列&&容器适配器
点击跳转到文章【C++学习第十二天——list容器的深度剖析及底层实现前面我们已经学习了list容器的相关知识,本文主要介绍STL中另外两种重要的结构,stack和queue。但是在STL中这两者并没有划分在容器范围内,而是将其称为容器适配器。deque(双端队列):是一种双开口的"连续"空间的数据结构可以在头尾两端进行插入和删除操作,且时间复杂度为O(1),与vector比较,头插效率高,不需要搬移元素;与list比较,空间利用率比较高。原创 2024-07-05 22:11:40 · 1060 阅读 · 0 评论 -
【C++/STL】list容器的深度剖析及底层实现
要模拟实现list,必须要熟悉list的底层结构以及其接口的含义,list的底层是带头双向循环链表,现在我们来模拟实现list容器的主要接口。list的介绍1、list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。3、原创 2024-07-03 15:47:01 · 931 阅读 · 0 评论 -
【C++/STL】vector的底层刨析和模拟实现
以上就是C++STL标准库中vector的模拟实现了,在实现过程中,我们使用了动态内存分配来实现vector的大小动态调整,并通过指针来管理内存。我们还实现了一些常用的成员函数,如push_back、pop_back、at等,以及一些运算符重载,如[]、=等。原创 2024-05-31 13:34:03 · 1297 阅读 · 0 评论 -
【C++/STL】string的使用及底层剖析
public://迭代器实现//string();//无参构造//全缺省~string();//长度//打印private:char* _str;原创 2024-05-08 22:16:10 · 1018 阅读 · 28 评论 -
【C++学习】模板初阶&&STL简介
class 类模板名// 类内成员定义public:perror("malloc申请空间失败");return;_size = 0;int _size;// 声明和定义分离的写法 不建议分离到.h 和.cpp,会出现链接错误// 要分离也是在 .h 中A、模板可以具有非类型参数,用于指定大小,可以根据指定的大小创建动态结构。可用来创建动态增长和减小的数据结构B、模板最重要的一点就是。原创 2024-04-23 10:50:51 · 1153 阅读 · 14 评论 -
【C++初阶】:C&C++内存管理
new的原理1. 调用operator new函数申请空间2. 在申请的空间上执行构造函数,完成对象的构造delete的原理1. 在空间上执行析构函数,完成对象中资源的清理工作2. 调用operator delete函数释放对象的空间new T[N]的原理1. 调用operator new[]函数,在operator new[]中实际调用operator new函数完成N个对象空间的申请2. 在申请的空间上执行N次构造函数delete[]的原理。原创 2024-04-21 11:18:54 · 1600 阅读 · 74 评论 -
【C++学习】:初始化列表、static,友元,内部类
这篇文章是关于构造函数的更一步了解,以及对 static 和友元的了解,最后还了解了内部类的相关知识原创 2024-04-18 23:30:10 · 1462 阅读 · 8 评论 -
【C++/学习】运算符重载&&const成员&&取地址
这一篇我们来补齐上一天的 留下的三个默认成员函数//上一天内容 :nullhttps://blog.youkuaiyun.com/island1314/article/details/137371086?spm=1001.2014.3001.5502 C++为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。 函数名字为:关键字operator 后面接需要重载的运算符符号。 函数原型:返回值类型原创 2024-04-16 23:39:40 · 1123 阅读 · 15 评论 -
【C++学习】构造函数 析构函数 拷贝构造函数
调用了拷贝构造把指针 换成别名& 也不会调用拷贝构造浅拷贝3.若未显式定义,编译器会生成默认的拷贝构造函数。默认的拷贝构造函数对象按内存存储按字节序完成拷贝,这种拷贝叫做浅拷贝,或者值拷贝。样例:原因是 : 用已经存在的d1拷贝构造d2,此处会调用Date类的但Date类并没有显式定义拷贝构造函数,则编译器会给Date类生成一个默认的拷贝构造函数注意:在编译器生成的默认拷贝构造函数中,内置类型是按照字节方式直接拷贝的,而自定义类型是调用其拷贝构造函数完成拷贝的4.原创 2024-04-11 14:09:53 · 1001 阅读 · 7 评论 -
【C++学习】类、this指针
/ 类体:由成员函数和成员变量组成// 一定要注意后面的分号// 默认为私有 无法从外部访问class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。1. 声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理public://属性//半径int m_r;//行为//获取圆的周长。原创 2024-04-04 11:29:35 · 1015 阅读 · 5 评论 -
【C++ 初阶】内联 auto&范围for循环&指针空值
在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,但遗憾的是一直没有人去使用它,大家可思考下为什么?auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。return 10;auto b = a;//auto e;无法通过编译,使用auto定义变量时必须对其进行初始化return 0;【注意】原创 2024-03-31 15:49:44 · 268 阅读 · 37 评论 -
【C++初阶】函数重载 && 引用
期间,函数不会直接传递实参或者将变量本身直接返回,而是传递实参或者返回变量的一份临时的拷贝,因此用值作为参数或者返回值类型,效率是非常低下的,尤其是当参数或者返回值类型非常大时,效率就更低.函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(可以知道,【当前a.cpp中调用了b.cpp中定义的Add函数时】,编译后链接前,a.o的目标。文件中没有Add的函数地址,因为Add是在b.cpp中定义的,所以Add的地址在b.o中。而C++是通过函数修。原创 2024-03-29 22:32:17 · 712 阅读 · 2 评论 -
【C++初阶】命名空间 && 缺省参数
/C语言没办法解决类似这样的命名冲突问题,所以C++提出了namespace来解决同一个域不能定义同一个变量不同的域可以定义同一个变量编译器默认查找a:当前局部域b:全局域找(注意不到命名空间找)对正常命名空间的使用//ps:一个工程中的test.h和下面test.cpp中两个X1会被合并成一个//test.h。原创 2024-03-28 14:56:39 · 703 阅读 · 0 评论