自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 【C++】你必须掌握的4种类型转换

你必须掌握的4种类型转换:static_cast、reinterpret_cast、const_cast、dynamic_cast

2024-05-08 23:18:41 992 1

原创 【C++】学习C++必须掌握的【五种特殊类设计】

学习C++必须掌握的五种特殊类设计:请设计一个类,不能被拷贝、请设计一个类,只能在堆上创建对象、请设计一个类,只能在栈上创建对象、请设计一个类,不能被继承、请设计一个类,只能创建一个对象(单例模式)

2024-05-05 21:44:06 748 4

原创 【C++】一篇文章带你熟练掌握<智能指针>及其模拟实现

​在 new 和 delete 之间如果 div() 抛异常了,那么开辟的空间 p 就无法释放。最终会造成内存泄露。我们之前面对这样的问题,是对 div() 函数套一层异常判断,如果出现异常,先释放资源,再将异常抛出给外面的捕获处理【异常处理】。因此发明了智能指针,本文详细讲解了智能指针的使用及原理、RAII、auto_ptr、unique_ptr、shared_ptr、weak_ptr.

2024-05-05 21:17:42 1021

原创 【C++】C++异常处理,你绝对不能错过的干货!!!

异常是一种处理错误的方式,当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的 直接或间接的调用者处理这个错误。throw: 当问题出现时,程序会抛出一个异常。这是通过使用 throw 关键字来完成的。catch: 在您想要处理问题的地方,通过异常处理程序捕获异常.catch 关键字用于捕获异常,可以有多个catch进行捕获。try: try 块中的代码标识将被激活的特定异常,它后面通常跟着一个或多个 catch 块。如果有一个块抛出一个异常,捕获异常的方法会使用try和catch关键字

2024-05-04 21:55:43 1441 1

原创 【C++】深入剖析C++中的lambda表达式&&包装器&&bind

随着C++语法的发展,人们开始觉得上面的写法太复杂了,每次为了实现一个algorithm算法, 都要重新去写一个类,如果每次比较的逻辑不一样,还要去实现多个类,特别是相同类的命名, 这些都给编程者带来了极大的不便。当我们使用包装器时,将可调用对象:函数指针,函数对象,lambda函数,都可以封装在包装器里。想要将可调用对象存储到容器里,首先我们得需要知道它的类型,函数指针的类型实在是太麻烦了,而仿函数类型我们是可以知道,但lambda的类型我们是不知道的,所以难道容器里只能存储仿函数吗?

2024-05-04 21:53:17 1206

原创 【C++】深入剖析C++11中右值引用和左值引用

我们注意到 to_string 函数的地址是无法获取到的,也就是说 to_string 函数的返回值是右值,而 to_string 函数的返回值又是自定义类型,所以这个右值是个将亡值,生命周期就在这一行,我们可以利用这个将要销毁的将亡值的特性,将这个将亡值的资源全部吸走,再将自己的不要的给它,这样不需要开辟空间,也不需要深度拷贝,ret 这个变量就获取到了想要的资源时,这里的前提就是变量要么是静态变量要么是全局变量,反正在函数结束后,该引用变量仍然存在,这个场景下才可以使用左值引用,减少拷贝。

2024-05-03 22:46:52 703 5

原创 【C++】深入剖析C++11 initializer_list &&新的类功能 &&可变模板参数

深入剖析C++11中的可变模板参数&&initializer_list&&新的类功能。包含默认成员函数的增加、关键字default、关键字delete

2024-05-03 22:45:55 1342

原创 【C++】哈希的应用---位图

🟢位图解决 数据是否在给定的整形数据中,结果是在或者不在,刚好是两种状态,那么可以使用一 个二进制比特位来代表数据是否存在的信息,如果二进制比特位为1,代表存在,为0 代表不存在。遍历和排序查找的工程量太大了,这肯定是不行的,因为,光是把数据存起来就要用掉16GB的内存,而且要求空间连续内存开不出这么大的连续空间。我们都知道计算机的数据和指令都是二进制的,二进制是由0,1两个数字组成,这就意味着这两个数字可以表示两个不同的状态,位图的基础也是基于这一点。一次都没有出现的,出现一次,出现两次及以上。

2024-05-01 21:49:40 1865 2

原创 【C++】哈希的应用---布隆过滤器

我们在使用新闻客户端看新闻时,它会给我们不停地推荐新的内容,它每次推荐时要去重,去掉 那些已经看过的内容。问题来了,新闻客户端推荐系统如何实现推送去重的?用服务器记录了用 户看过的所有历史记录,当推荐系统推荐新闻时会从每个用户的历史记录里进行筛选,过滤掉那些已经存在的记录。如何快速查找呢?🟢用哈希表存储用户记录,缺点:浪费空间🟢用位图存储用户记录,缺点:位图一般只能处理,如果内容编号是字符串,就无法处理了。🟢将哈希与位图结合,即布隆过滤器。

2024-05-01 21:48:23 787 1

原创 【C++】封装哈希表 && unordered_map和unordered_set容器

封装哈希表 && unordered_map和unordered_set容器

2024-04-30 22:52:46 796

原创 【C++】哈希表的底层逻辑

哈希表的基本概念、哈希冲突、哈希冲突的解决,闭散列和开散列的修改操作。

2024-04-30 22:52:06 1404

原创 【C++】红黑树模拟实现STL中的map与set

map 和 set 的底层都是红黑树,虽然不是同一棵树,但都是由同一个模板实例化而成。因此我们希望改造红黑树,让他适配不同类型的数据。关联式容器中存储的是的键值对,k为key的类型,ValueType: 如果是map,则为pair;如果是set,则为k我们可以定义一个,通过传模板参数来决定树里存的是什么数据类型。

2024-04-29 23:31:50 643

原创 【C++】红黑树的模拟实现

红黑树的模拟实现

2024-04-29 23:31:06 727 1

原创 【C++】AVL 树

前面对map/multimap/set/multiset进行了简单的介绍,在其文档介绍中发现,这几个容器有个 共同点是:其底层都是按照二叉搜索树来实现的,但是二叉搜索树有其自身的缺陷,假如往树中插入的元素有序或者接近有序,二叉搜索树就会退化成单支树,时间复杂度会退化成O(N),因此 map、set等关联式容器的底层结构是对二叉树进行了平衡处理,即采用平衡树来实现。我们今天来学习AVL树。

2024-04-08 00:13:56 883 1

原创 【C++】map && set

set multiset map multimap 的相关知识

2024-04-08 00:12:24 722 1

原创 【C++】二叉搜索树之相关例题

上一篇我们已经学习了二叉搜索树的相关知识,现在我们将带着解决一些相关习题,便于我们更好地理解二叉搜索树。

2024-04-05 21:39:31 875

原创 【C++】二叉搜索数

搜索二叉树是对数据结构二叉树的进阶,本文将从概念、模拟实现(构造、析构、拷贝、赋值、插入、打印、搜索、删除)等多个方面对二叉树进行讲解。二叉树在K模型&&KV模型中的应用。快来学习吧!!!!

2024-04-05 21:35:28 849 1

原创 【C++】多态

多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了 Person。Person对象买票全价,Student对象买票半价。🌟那么在继承中要构成多态还有两个条件:⭕必须通过基类的指针或者引用调用虚函数⭕被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写。

2024-03-29 22:40:45 1145 2

原创 【C++】多态的原理

多态的原理及相关问题的解答

2024-03-29 22:39:34 924

原创 【C++】虚拟继承 && 组合

上一篇文章我们已经知道了虚拟继承可以解决菱形继承的二义性和数据冗余的问题,那其中的原理是什么呢,现在让我们来揭晓吧。

2024-03-25 22:25:53 1099 3

原创 【C++】继承

继承的概念和定义、基类和派生类对象赋值转换、继承中的作用域、派生类的默认成员函数、继承与友元、继承与静态成员、菱形继承以及虚拟继承。

2024-03-25 22:24:56 965 1

原创 【C++】模板进阶

前面我们已经学习了模板初阶,对模板有了基本的认识,下面我们将从非类型模板参数、模板的特化和模板分离编译对模板进行更加深入的学习。一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链 接起来形成单一的可执行文件的过程称为分离编译模式。【优点】⭕模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生⭕ 增强了代码的灵活性【缺陷】⭕模板会导致代码膨胀问题,也会导致编译时间变长⭕出现模板编译错误时,错误信息非常凌乱,不易定位错误。

2024-03-21 23:35:56 1016 3

原创 【C++】模板初阶

当我们想交换两个变量时,可以使用交换函数(swap函数),但是不同的变量不能使用同一个交换函数,需要对交换函数进行重载,但重载有一定的弊端:⭕重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函 数⭕代码的可维护性比较低,一个出错可能所有的重载均出错那能否告诉编译器一个模子,让编译器根据不同的类型利用该模子来生成代码呢?C++中存在这样一个模具,通过给这个模具中填充不同材料(类型),来获得不同材料的铸件 (即生成具体类型的代码),也就是模板。

2024-03-21 23:33:05 762 2

原创 【C++】仿函数&&优先级队列&&反向迭代器

优先级队列 和 仿函数的详细介绍。对反向迭代器的补充

2024-03-20 20:09:07 1249 1

原创 【C++】Stack && queue 模拟实现及容器适配器

利用 vector 和 list 模拟实现 stack 、 queue和容器适配器(deque)。

2024-03-13 23:13:01 1273 1

原创 【C++】手把手教你模拟实现 list

手把手教你手搓模拟实现 list 类,详细讲解了迭代器模板参数设置,迭代器的使用及原理,修改操作的重载。

2024-03-12 20:54:39 801

原创 【C++】手把手教你模拟实现 vector

为了更好理解 vector,本篇将带你手搓实现 vector。

2024-03-09 19:07:08 1004 1

原创 【C++】浅谈 vector 迭代器失效 && 深拷贝问题

迭代器在遍历访问的时候非常好用,但是可能会出现迭代器失效的问题。本文从底层空间改变和指定位置元素的删除操作两方面讲解了迭代器失效的问题,并附有大量实际操作截图便于大家了解。同时vector会涉及到深拷贝问题,一起学习吧。

2024-03-08 19:33:23 1467 2

原创 【C++】vector 的常用接口

vector 的介绍和使用。

2024-03-03 11:49:59 1333 4

原创 【C++】手把手教你手搓模拟实现string类

string类是C++中的一个重要节点,本篇将带你从构造/析构/赋值、迭代器、operator、for循环、增删查改等手把手剖析string类的实现,一起来学习吧!!!

2024-02-29 22:50:35 1113 6

原创 【C++】string类的常见习题

string类是学习C++必须要掌握的一个知识点,本文写了string类常见的相关题目,例如:字符串相加、仅仅反转数字、字符串最后一个单词的长度、验证回文串、找字符串第一个唯一字符、反转字符串Ⅱ、反转字符串Ⅲ、找出字符串第一个只出现一次的字符。希望会对你有所帮助💪💪💪!!!

2024-02-28 15:37:05 1414 5

原创 【C++】string类的的常用接口[内含大量实操截图]

本文主要讲解了string类的一些常用接口,包括string类的常用构造、类对象的容量操作、类对象的访问及遍历以及类对象的修改操作,内附大量操作截图,可以帮助更好理解string类。

2024-02-27 15:21:58 979 2

原创 【C++】一键学会内存管理之new&&delete

本篇主要讲解了C++的内存分布、C++的内存管理方式、operator new && operator delete函数、delete && free的匹配、new&&delete的实现原理及区别,本篇带你一键学会

2024-02-26 14:13:46 940 3

原创 【Linux调试器】gdb背景和调试方法(入门看这一篇就够了)

gdb背景,gdb操作包括:开启gdb,退出gdb、设置断点、取消断点、直接运行、显示源代码、逐过程、进入目标函数、执行当前行、修改变量值,跟踪查看变量值,跳至指定行等等,帮助你更好了解gdb!!!❤❤❤

2024-01-12 09:00:00 1237 3

原创 【C++】类和对象之匿名对象&&友元&&内部类

类和对象有许多需要注意的小细节,本文带你进入匿名对象,友元函数和友元类、内部类和拷贝对象的一些编译器优化,快来一起学习吧!!!

2024-01-11 20:54:27 998

原创 【C++】一键学会const成员&&explicit关键字&&static 成员

本文主要讲述了const成员、explicit关键字和static 成员,相信可以帮助大家更好地理解类和对象✊︎✊︎✊︎ !!!

2024-01-10 09:00:00 945

原创 【Linux】程序员必备技能:熟练使用 git

合理利用 git 是每个程序员必备的技能,本文详细讲解了 git 的功能和操作:git 为什么被称作版本控制器?怎样和本地仓库关联?git三板斧?相信对你有很大帮助。

2024-01-09 09:00:00 540

原创 【C++】深入了解构造函数之初始化列表

当我们遇到const 成员变量、引用成员变量和无默认构造函数的成员变量时,会发现构造函数无法满足初始化需求,这是为什么呢?初始化列表又是什么,有什么功能呢?本篇带你深入了解构造函数~~~🎇🎇🎇

2024-01-07 13:27:40 603 1

原创 【Linux软件包管理器】yum详解

对Linux软件包管理器进行基本介绍!!!

2024-01-06 09:00:00 470 1

原创 【C++】流插入和流提取重载

进入C++,cout,cin是非常方便的使用工具,那自定义类型也可以照常使用嘛?如果不能,该用什么方法实现呢?友元函数和内联函数又是什么呢?本文带你开启重载流插入和流提取之旅 🏳️‍🌈🏳️‍🌈🏳️‍🌈

2024-01-05 15:16:32 772 6

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除