
C++修行之路
文章平均质量分 97
从C++基础知识开始,剑指C++高峰
北 海
六月城市之星(安顺)Top1、C/C++领域新星创作者、CSDN实力新星、华为云积极博主、阿里云社区专家博主,代码改变世界
展开
-
C++『异常』
异常处理在软件开发中扮演着关键的角色,它为程序员提供了一种有力的手段来处理和响应程序执行过程中可能出现的错误。本文将深入探讨异常的基本概念、异常处理方式、异常的使用技巧和异常体系的设计,以帮助开发者更好地理解和应用异常处理机制原创 2023-12-10 16:25:14 · 2024 阅读 · 210 评论 -
C++11『lambda表达式 ‖ 线程库 ‖ 包装器』
自从C++98以来,C++11无疑是一个相当成功的版本更新。它引入了许多重要的语言特性和标准库增强,为C++编程带来了重大的改进和便利。C++11的发布标志着C++语言的现代化和进步,为程序员提供了更多工具和选项来编写高效、可维护和现代的代码在这C++11系列的收尾文章中,我们深入研究了lambda表达式,为函数对象提供了快速构建的方法。接着,我们学习了标准线程库,包括线程、互斥锁、条件变量等,为跨平台的多线程编程提供了强大工具。原创 2023-11-23 20:28:21 · 1579 阅读 · 117 评论 -
C++11『右值引用 ‖ 完美转发 ‖ 新增类功能 ‖ 可变参数模板』
自从C++98以来,C++11无疑是一个相当成功的版本更新。它引入了许多重要的语言特性和标准库增强,为C++编程带来了重大的改进和便利。C++11的发布标志着C++语言的现代化和进步,为程序员提供了更多工具和选项来编写高效、可维护和现代的代码原创 2023-11-16 07:00:00 · 1551 阅读 · 158 评论 -
C++11『基础新特性』
自从C++98以来,C++11无疑是一个相当成功的版本更新。它引入了许多重要的语言特性和标准库增强,为C++编程带来了重大的改进和便利。C++11的发布标志着C++语言的现代化和进步,为程序员提供了更多工具和选项来编写高效、可维护和现代的代码原创 2023-11-13 12:42:48 · 1638 阅读 · 114 评论 -
C++ 哈希的应用【布隆过滤器】
注册账号是进行网络冲浪的第一步操作,而拥有一个具有个性且独一无二的用户昵称是非常重要的,很多人在填写昵称时,常常会看到此昵称已存在的提示,系统是如何快速知道当前昵称是否存在呢?总不能挨个去遍历对比吧,这时候就需要我们本文中的主角:布隆过滤器。原创 2023-07-30 21:39:02 · 5929 阅读 · 107 评论 -
C++ 哈希的应用【位图】
位图(bitset)是一种特殊的数据结构,仅仅依靠01表示当前位置是否有数据存在,常用于对查找速度和存储空间有着高要求的场景中,除此之外,位图还可以配合宏定义,实现同时传递多个参数,比如系统调用open,其中的参数2(打开方式)就是一个简单的位图结构原创 2023-07-25 22:57:28 · 5837 阅读 · 183 评论 -
C++【哈希表的完善及封装】
关于哈希表的两种实现方法:闭散列、开散列 已经在上一篇文章中学习过了,闭散列 存在踩踏问题,十分影响效率,因此在实践中往往会选择更加优秀的 开散列,哈希表(开散列)又叫做 哈希桶,作为被选中的结构,我们需要对其进行改造,完善哈希桶,使其最终能封装出 unordered_set 和 unordered_map原创 2023-07-12 18:39:11 · 7443 阅读 · 169 评论 -
C++【哈希表的模拟实现】
哈希表的核心思想是映射,对数据的键值进行处理后,映射至表中对应的位置,实现存储,利用空间换时间,哈希表的查找效率非常高,可以达到O(1),哈希表的实现主要分为两种:闭散列 与 开散列,本文中将利用这两种方案实现哈希表原创 2023-07-09 22:54:58 · 4741 阅读 · 94 评论 -
C++【初识哈希】
哈希(Hash)是一个广泛的概念,其中包括哈希表、哈希冲突、哈希函数等诸多概念,核心为元素(键值)与存储位置(哈希值)之间的映射关系,哈希值可以通过各种哈希函数进行计算,需要尽量确保 “唯一性”,避免冲突,除此之外,哈希函数还可用于区块链中,计算 区块头(Head)中的信息,本文将带你认识哈希,学习其中的各种知识原创 2023-07-03 09:03:09 · 8234 阅读 · 197 评论 -
C++【一棵红黑树封装 set 和 map】
红黑树的基本情况我们已经在上一篇文章中学习过了,本文主要研究的是红黑树的实际应用:封装实现set和map,看看如何通过一棵红黑树满足两个不同的数据结构;在正式封装之前,先要对之前的红黑树进行完善,增加必要功能原创 2023-06-24 10:27:22 · 14728 阅读 · 128 评论 -
C++【红黑树】
红黑树是平衡二叉搜索树中的一种,红黑树性能优异,广泛用于实践中,比如Linux内核中的CFS调度器就用到了红黑树,由此可见红黑树的重要性原创 2023-06-22 01:07:47 · 18835 阅读 · 153 评论 -
C++【AVL树】
普通的二叉搜索树可能会退化为单支树(歪脖子树),导致搜索性能严重下降,为了解决这个问题,诞生了平衡二叉搜索树,主要是通过某些规则判断后,降低二叉树的高度,从而避免退化,本文介绍的AVL树就属于其中一种比较经典的平衡二叉搜索树,它是通过 平衡因子 的方式来降低二叉树高度的,具体怎么操作,可以接着往下看原创 2023-06-19 00:14:33 · 9897 阅读 · 146 评论 -
C++【set 和 map 学习及使用】
set和map是STL中的容器之一,不同于普通容器,它俩的查找速度极快,常用来存储各种经常被检索的数据,因为这俩容器的底层是平衡二叉搜索树中的红黑树。除此之外,还可以借助其特殊的性质,解决部分难题原创 2023-06-16 17:18:23 · 11270 阅读 · 111 评论 -
C++【二叉搜索树】
时隔多日,又回到了二叉树的学习中,在C++进阶中,我们首先要学习 二叉搜索树,重新捡起二叉树的相关知识,然后会学习AVL树 及 红黑树,最后会用红黑树封装实现库中的set和map,作为C++进阶中的难度最高峰,整个学习过程非常艰辛,但关关难过关关过,让我们先从比较简单的 二叉搜索树 开始学习。原创 2023-06-13 20:37:23 · 10481 阅读 · 118 评论 -
C++【多态】
多态是面向对象三大基本特征中的最后一个,多态可以实现 “一个接口,多种方法”,比如父子类中的同名方法,在增加了多态后,调用同名函数时,可以根据不同的对象(父类对象或子类对象)调用属于自己的函数,实现不同的方法,因此多态的实现依赖于继承原创 2023-05-27 15:53:15 · 8935 阅读 · 145 评论 -
C++【继承】
继承是面向对象三大特性之一(封装、继承、多态),所有的面向对象(OO)语言都具备这三个基本特征,封装相关概念已经在《类和对象》系列中介绍过了,今天主要学习的是继承,即如何在父类的基础之上,构建出各种功能更加丰富的子类王阿姨(父类)的两个孩子(子类),在父类的基础之上,衍生出了不同的特性了解完继承相关概念后,就可以开始学习使用继承了。原创 2023-05-14 23:16:08 · 8258 阅读 · 105 评论 -
C++【模板进阶】
模板是搭建STL的基本工具,同时也是泛型编程思想的代表,模板用好了可以提高程序的灵活性,以便进行更高效的迭代开发,模板除了最基本的类型替换功能外,还有更多高阶操作:非类型模板参数、全特化、偏特化等,以及关于模板声明与定义不能分离(在两个不同的文件中)的问题,都将在本文中进行介绍原创 2023-05-10 23:28:16 · 8607 阅读 · 130 评论 -
C++ STL学习之【优先级队列】
优先级队列是容器适配器中的一种,常用来进行对数据进行优先级处理,比如优先级高的值在前面,这其实就是初阶数据结构中的堆,它俩本质上是一样东西,底层都是以数组存储的完全二叉树,不过优先级队列中加入了泛型编程的思想,并且属于STL中的一部分原创 2023-05-04 22:28:58 · 10393 阅读 · 34 评论 -
C++ STL学习之【反向迭代器】
适配器模式是STL中的重要组成部分,在上一篇文章中我们学习了容器适配器的相关知识,即stack与queue,除了容器适配器外,还有迭代器适配器,借助迭代器适配器,可以轻松将各种容器中的普通迭代器转变为反向迭代器,这正是适配器的核心思想原创 2023-04-22 21:03:59 · 4700 阅读 · 80 评论 -
C++ STL学习之【容器适配器】
适配器(配接器)是STL中的六大组件之一,扮演着轴承、转换器的角色,使得STL中组件的使用更为灵活,比如栈和队列就是属于适配器而非容器,以及神秘的反向迭代器也属于适配器原创 2023-04-21 19:01:46 · 5021 阅读 · 69 评论 -
C++ STL学习之【list的模拟实现】
STL中的list是一个双向带头循环链表,作为链表的终极形态,各项操作性能都很优秀,尤其是list中迭代器的设计更是让人拍案叫绝,如此优秀的容器究竟是如何实现的?本文将带你共同揭晓原创 2023-04-13 23:49:34 · 4512 阅读 · 85 评论 -
C++ STL学习之【list的使用】
STL中的vector存在头部及中部操作效率低的缺陷,需要另一种容器来弥补其短板,此时list就应运而生,list是一个双向带头循环链表,是链表的终极形态,除了不支持下标的随机访问外,其他方面效率都是极高的,本文将带大家认识、使用list容器原创 2023-04-05 20:24:41 · 4412 阅读 · 65 评论 -
C++ STL学习之【vector的模拟实现】
vector是STL中的容器之一,其使用方法类似于数据结构中的顺序表,得益于范型编程和C++特性的加持,vector更强大、更全能;在模拟实现vector时,还需要注意许多细枝末节,否则就很容易造成重复析构及越界访问原创 2023-04-02 23:58:22 · 4277 阅读 · 67 评论 -
C++ STL学习之【vector的使用】
vector是表示可变大小数组的序列容器,其使用的是一块连续的空间,因为是动态增长的数组,所以vector在空间不够时会扩容;vector优点之一是支持下标的随机访问,缺点也很明显,头插或中部插入效率很低,这和我们之前学过的顺序表性质很像,不过在结构设计上,两者是截然不同的原创 2023-03-11 18:50:22 · 4214 阅读 · 78 评论 -
C++ STL学习之【string的模拟实现】
string本质上就是一个专注于存储字符的顺序表,使用起来很方便;但在模拟实现string时,有许多值得注意的点,下面就来看看string类是如何诞生的吧原创 2023-03-01 18:35:50 · 2418 阅读 · 81 评论 -
C++ STL 学习之【string的使用】
STL 是 C++ 的重要组成部分,由六大部分构成:`伪函数`、`空间配置器`、`算法`、`容器`、`迭代器` 和 `配接器`,其中各种各样的 `容器` 可以很好的辅助我们写程序,比如今天要介绍的 `string`,有了它之后,我们对字符串的操作就能变得行云流水原创 2023-02-18 15:18:10 · 1400 阅读 · 49 评论 -
C++【模板初阶】
早在北宋年间,中国的毕昇就已经发明了泥活字,标志着四大发明之一的活字印刷术正式诞生,从此文化传播取得了革命性突破,各种文学作品得以走进千家万户。倘若这项技术还没有被发明,那么恐怕我们现在的书本都还得靠逐字手抄传播,效率是非常低的。我们的程序也是如此,很多需要频繁使用的函数每次都得手动写,这可难不倒程序员,于是在上世纪80年代末,范型编程思想正式诞生,它就像是印刷文字的模具,将程序主体刻在其中,需要使用时让编译器根据参数类型生成即可,这就是我们今天的主角:模板原创 2023-02-15 16:25:56 · 1462 阅读 · 50 评论 -
C/C++【内存管理】
C++中的内存管理机制和C语言是一样的,但在具体内存管理函数上,C语言的malloc已经无法满足C++面向对象销毁的需求,于是祖师爷在C++中新增了一系列内存管理函数,即new和delete如果你还没没有对象,那就尝试new一个吧原创 2023-02-15 09:14:01 · 4546 阅读 · 45 评论 -
类和对象实操之【日期类】
在学完类和对象相关知识后,需要一个程序来供我们练习、巩固知识点,日期类就是我们练习的首选程序,日期类实现简单且功能丰富,相信在完整地将日期类实现后,能对类和对象有更好的掌握及更深的理解原创 2023-02-11 16:16:12 · 2747 阅读 · 48 评论 -
C++类和对象(下)
在前两篇关于类和对象的文章中,我们学习了C++默认成员函数,现在对类的基本框架已经搭好,关于类和对象的学习还存在一些细节,深入理解这些细节就是本文的主要目的原创 2023-02-10 17:16:38 · 1750 阅读 · 67 评论 -
C++类和对象(中)
祖师爷在设计C++中的类时,规定每个类中都有六个默认成员函数,即使我们不主动写,编译器也会自动生成,这些成员函数就是神秘的天选之子,不仅神秘,而且还很强大,可以这么说:类和对象的是否学懂,取决于对这几个天选之子的理解程度。本文将会逐一介绍这几个默认成员函数,跟随我的脚步,一起揭开他们的神秘面纱原创 2023-02-09 20:35:18 · 2667 阅读 · 49 评论 -
C++类和对象(上)
C++在原C语言的基础上新增了面向对象(Object-Oriented)的思想,使其从一门关注解题方法与过程的语言转变为关注解题对象的语言,对于C++来说,万物皆可是对象,下面跟随我的脚步,一起走进C++类和对象的世界原创 2023-02-08 16:03:54 · 1616 阅读 · 45 评论 -
C++ 入门基础
C++是C语言的超集,是一门在C语言基础上发展起来的语言,C++很强大,如今C++C和STL,因此我们一般将C++看作一个语言联邦,显然C++的内容很丰富,也比较难学,但当我们掌握后,它将称为一把利刃,C++摘得 TIOBE 2022 年度编程语言桂冠。原创 2023-02-03 13:46:22 · 1730 阅读 · 85 评论