
C++从入门到放弃
文章平均质量分 93
学习C++的过程
努力努力再努力.xx
这个作者很懒,什么都没留下…
展开
-
【C++】智能指针
RAII(Resource Acquisition Is Initialization)是一种利用对象生命周期来控制程序资源(如内存、文件句柄、网络连接、互斥量等等)的简单技术。在对象构造时获取资源,接着控制对资源的访问使之在对象的生命周期内始终保持有效,最后在**对象析构的时候释放资源**。原创 2023-08-07 19:00:00 · 626 阅读 · 0 评论 -
【C++】C++ 11 新特性
C++11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而且能提升程序员的开发效率。同时,C++11增加的语法特性非常篇幅非常多,没办法一 一讲解,本文主要讲解实际中比较实用的几个语法。原创 2023-07-20 16:58:42 · 625 阅读 · 0 评论 -
【C++】位图和布隆过滤器
位图,就是用每一个比特位位来存放某种状态,适用于海量数据,数据无重复的场景。通常是用来判断某个数据存不存在的。布隆过滤器可以告诉我们 “某样东西一定不存在或者可能存在”,也就是说布隆过滤器说这个数不存在则一定不存,布隆过滤器说这个数存在可能不存在原创 2023-07-15 19:15:00 · 310 阅读 · 0 评论 -
【C++】unordered_map、unordered_set 模拟实现
unordered_map内部实现了一个哈希表,也叫散列表,通过把关键码值映射到Hash表中一个位置来访问记录,查找的时间复杂度可达到O(1),其在海量数据处理中有着广泛应用。因此,其元素的排列顺序是无序的。unordered_set底层也是哈希表,只是存储的是value,而不是原创 2023-07-11 17:09:44 · 252 阅读 · 0 评论 -
【C++】哈希
开散列法又叫链地址法(开链法),首先对关键码集合用散列函数计算散列地址,具有相同地址的关键码归于同一子集合,每一个子集合称为一个桶,各个桶中的元素通过一个单链表链接起来,各链表的头结点存储在哈希表中。取到一个数据的哈希值之后,还要 mod 当前容器的大小,当前容器的大小也是有讲究的,经过研究,最好是素数,有很多的哈希素数可供选择,在 GetNextPrime() 中依次递增。对元素的关键码进行同样的计算,把求得的函数值当做元素的存储位置,在结构中按此位置取元素比较,若关键码相等,则搜索成功。原创 2023-06-27 20:42:16 · 290 阅读 · 0 评论 -
【C++】Map、Set 模拟实现
map、set 是 C++ 中的关联式容器,由于 map 和set所开放的各种操作接口,RB-tree 也都提供了,所以几乎所有的 map 和set的操作行为,都只是转调红黑树的操作行为。本文对 Map、Set 进行模拟实现,可以深入的理解这两个关联式容器的底层原理!原创 2023-05-28 16:51:12 · 1278 阅读 · 0 评论 -
【C++】红黑树的实现
红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。map 、set 两个关联式容器的底层就是红黑树。原创 2023-05-16 20:52:09 · 705 阅读 · 1 评论 -
【C++】AVL树
AVL树是在搜索二叉树的基础上,保证任意一个节点,其左右子树的高度差不超过1,这样子的搜索树又叫做平衡搜索二叉树/AVL树。原创 2023-05-14 20:10:16 · 415 阅读 · 0 评论 -
【C++】多态
封装、继承、多态 是面向对象的三大特性。多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。这篇文章介绍了多态的一些使用规则,及其实现原理。原创 2023-04-29 19:51:47 · 848 阅读 · 0 评论 -
【C++】搜索二叉树
有了二叉树的概念,就可以继续学习二叉搜索树,这是为了学习 AVL 树、红黑树打下基础,其中,二叉搜索树的删除是需要特别注意的地方。原创 2023-05-12 20:47:02 · 636 阅读 · 0 评论 -
【C++】继承
继承是 面向对象程序设计 使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。本文对继承的基本语法做了介绍,并且对一些特殊用法,比如友元、静态继承、菱形继承也有一定程度的涉猎。原创 2023-04-23 17:24:47 · 624 阅读 · 0 评论 -
【C++】容器适配器
适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。这篇文章介绍了 stack 、queue、priority_queue 通过容器适配器来实现的原理。原创 2023-03-24 21:07:26 · 292 阅读 · 0 评论 -
【C++】STL—— list 模拟实现
vector 是一个和数组类似的容器,list 实际上就是和链表类似的容器。它对数据的操作,本质上就是对链表的增删查改,底层是双向链表。其实现并不是很难,难的是实现 list 的迭代器,以及反向迭代器,这里就需要借鉴 STL 中的思想。原创 2023-03-30 10:04:05 · 345 阅读 · 0 评论 -
【C++】STL—— vector 模拟实现
vector 是 C++ 的 STL 标准库中的一个容器,它主要使用的是泛型编程的思想,即使用模板。这篇blog用自己的方法实现了vector这个容器,同时对模板的使用也有所感悟。原创 2023-03-17 18:45:45 · 796 阅读 · 1 评论 -
【C++】运算符重载练习——Date 类
日期类是用来描述具体日期的,涉及到 年、月、日,当然,也可以有多个日期之间的关系。这个类对于运算符重载的练习帮助很大,几乎所有的成员函数都是运算符重载。原创 2023-03-11 14:45:56 · 469 阅读 · 0 评论 -
【C++】inline 内联函数
C++的内联函数在有些场景非常有用,可以极大地提高程序运行效率,本文对其用法进行了一些介绍,也说明了需要注意的地方,相信对你有所帮助!原创 2023-03-01 16:49:51 · 430 阅读 · 0 评论 -
【C++】STL——string类的模拟实现
C++ 中,string类是比较常用的处理字符串的标准库,里面包含了众多的函数。本文对其中的一些函数进行模拟实现,简单地自己实现了string类。原创 2023-03-07 20:24:59 · 450 阅读 · 0 评论 -
【C++】 C & C++ 内存管理
C++ 是一门面向对象的语言,C语言是面向过程的,两者这样的区别,注定了他们在内存管理的时候,会有很大的不同之处。这篇文章详细介绍了C++ 中 new/delete 的用法,同时也对C语言中的 malloc/free 进行区分。原创 2023-02-13 15:19:32 · 3024 阅读 · 2 评论 -
【C++】 类和对象 (下)
类和对象部分,除了六个默认构造函数,还有其他一些零碎的知识,比如初始化成员列表、友元等等。此外,了解编译器的优化机制,可以让我们写出更优质的代码。原创 2023-02-09 11:40:39 · 559 阅读 · 3 评论 -
【C++】万字深剖 类和对象(中)
C++ 的类和对象部分,有六个默认成员函数,即使我们不实现,编译器也会自动生成,但是自己实现与否,区别巨大,本篇文章详细介绍了这六个默认成员函数。原创 2023-02-06 21:51:41 · 1345 阅读 · 8 评论 -
【C++】初识类和对象
C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。本文初步讲解了类和对象的思想。原创 2023-02-04 11:12:12 · 470 阅读 · 0 评论 -
【C++】揭开“引用”的庐山真面目
引用是C++新增的,它不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。原创 2023-02-03 15:05:49 · 396 阅读 · 0 评论 -
【C++】为什么C++会支持函数重载
C++的函数重载相信大家基本上都知道,但是,为什么C++可以支持函数重载呢?不同的编译环境是如何定义其支持规则呢?如果您对这些问题感到疑惑,相信看完本文就可以解答心中的问题。原创 2023-01-17 21:21:10 · 527 阅读 · 0 评论 -
【C++】缺省参数
C++的缺省参数是补充C语言的一个重要内容,很有用。原创 2023-01-09 14:35:11 · 505 阅读 · 0 评论 -
【C++】命名空间 以及 如何理解using namespace std;
你真的了解 using namespace std; 的真实作用吗?去掉using namespace std; 会有什么影响呢?一定要加上这句话,才可以完整地打出一个Hello World 程序吗?有没有不加的办法?阅读本文,这些疑问都可以得到解决。原创 2023-01-07 19:56:58 · 1346 阅读 · 0 评论