首页
学习
活动
专区
工具
TVP
发布

C++

专栏成员
73
文章
5415
阅读量
15
订阅数
【C++】语法简化和增强,C++11都做了什么?
相比于C++98,C++11在C++98的基础上进行了大量的改进和扩展,包含了很多新特性,也包括对一些缺陷的修正,这些新特性和改进不仅提高了代码的质量和效率,还为开发者提供了更强大的工具和更灵活的编程方式。
_小羊_
2024-10-19
590
【C++】unordered_set、unordered_map超详细封装过程,处理底层细节
上篇文章我们简单地实现了哈希表,本篇文章将基于开散列实现的哈希表封装出unordered_set和unordered_map的基本功能。 本文不再从头实现哈希表,而是着重介绍封装unordered_set、unordered_map中的细节问题,如果小伙伴对哈希表的实现还不太熟悉的话请先阅读上篇文章。
_小羊_
2024-10-19
710
【C++】精妙的哈希算法
AVL树、红黑树等平衡树搜索效率取决于搜索过程中的比较次数,一般时间复杂度为O(logN),虽然平衡树的搜索效率已经很快,但如果可以不经过任何比较或者常数次的比较后就能搜索到我们要找的元素,会极大的提高效率。
_小羊_
2024-10-16
610
【C++】基于红黑树封装set和map
前面我们介绍了set和map的底层细节,在上篇文章中也简单实现了红黑树,而我们知道set和map的底层就是依靠红黑树实现的,那么在本文我们将学习如何基于红黑树来封装出set和map。 本篇文章会带你深入理解C++的三大特性之一——封装。
_小羊_
2024-10-16
820
【C++】二叉搜索树+变身 = 红黑树
本篇文章不会带你从头到尾实现红黑树,但会带你深入理解红黑树是怎么实现平衡的,怎么通过旋转变换实现保持平衡,以及实现平衡过程中的细节应该怎么处理等。
_小羊_
2024-10-16
880
【C++】二叉搜索树+变身 = AVL树
本篇文章不会带你从头到尾实现AVL树,但会带你深入理解AVL树是怎么实现平衡的,怎么通过旋转变换实现保持平衡,以及实现平衡过程中的细节应该怎么处理等。
_小羊_
2024-10-16
540
【Linux】包管理器、vim详解及简单配置
包管理器(Package Manager)是一种软件工具,它自动化了安装、更新、配置、移除和管理计算机程序库中软件包的过程。在操作系统和软件开发的上下文中,包管理器使得用户能够轻松管理各种软件包,包括它们的依赖关系、版本和配置,而无需手动处理复杂的安装和更新过程。这里只简单介绍两种常见的包管理器。
_小羊_
2024-10-16
1010
【Linux】权限管理——专治不会设置权限而头疼
在Linux系统中,权限是指系统用来限制和控制用户对文件和目录的访问能力的一组规则。这些规则决定了用户可以对文件或目录执行哪些操作,比如读取(read)、写入(write)、执行(execute)等。Linux系统通过权限来维护系统的安全性和数据的完整性。
_小羊_
2024-10-16
880
【C++进阶】2024年了set、map还搞不懂底层细节?
在学习set和map之前,我们首先来了解一下 关联式容器 和 键值对 这两个概念。
_小羊_
2024-10-16
790
【Linux】常用指令,带你快速上手
承接上文,本文将继续补充介绍一些Linux基本指令,以及探讨指令究竟是什么,又什么是权限?权限是 Linux 系统中非常重要的一部分,它决定了谁可以读取、写入或执行文件或目录。
_小羊_
2024-10-16
550
【C++进阶】探秘二叉搜索树
本篇文章将介绍一种功能更加强大的二叉树——二叉搜索树。 相比于普通的二叉树,二叉搜索树在很多方面都有优势,尤其是在查找数据上效率明显提高,并且通过中序遍历二叉搜索树它所存储的数据是有序的。
_小羊_
2024-10-16
380
【C++进阶】多态,这样学才够清楚
本篇文章带你深入学习面向对象设计思想的重要体现之一——多态。 多态在面向对象编程(OOP)中具有深远的意义,它不仅是OOP的三大特性之一,还是实现代码复用、提高程序灵活性和可扩展性的重要手段。
_小羊_
2024-10-16
580
【Linux】萌新看过来!一篇文章带你走进Linux世界
可能很多刚开始接触Linux的童鞋们和我一样,在这之前对Linux并不熟悉,只知道Linux是一个操作系统,之外一概不知。没关系,问题不大,本篇文章将会带你初步的认识Linux,了解Linux的相关背景和一些简单的指令,让你从一个小萌新成为一个大萌新。 本文使用Xshell远程登录Linux服务器,CentOS系统。
_小羊_
2024-10-16
800
OJ习题 篇2
可以用快慢指针,快指针表示遍历数组到达的下标位置,慢指针表示下一个不同元素要填入的下标位置,初始时两个指针都指向下标1,这是为了体现慢指针记录不重复的数据个数。 删除重复项和找不重复的项效果是一样的。
_小羊_
2024-10-16
720
OJ习题 篇1
有时候我们需要非常大的数据相加时,整型的范围不够,就可以将数据转换为字符串的形式运算,再将结果转回为整型。 整型相加时是从后往前加的,这里的字符串相加我们也从后往前加。不断取出两个字符串的末尾字符,转换为整形后相加,再用+=追加到字符串末尾,其中还要考虑进位的情况。 因为string类支持operator[],所以我们可以通过下标的方式遍历字符串。 其中两个字符串的第一位相加也可能有进位,所以循环结束后还需要判断进位是否为1。 因为我们是从后往前加的,所以最后还需要用reverse将字符串翻转过来。
_小羊_
2024-10-16
690
【C++进阶】继承
继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许我们在保持原有类特性的基础上进行扩展,增加方法(成员函数)和属性(成员变量),这样产生新的类,称子类。 继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的函数层次的复用,继承是类设计层次的复用。
_小羊_
2024-10-16
790
【C++】适配器+优先级队列
适配器是一种设计模式,设计模式是一套被反复使用的、多数人知道的、经过分类编目的、代码设计经验的总结,该模式是将一个类的接口转换成客户希望的另外一个接口。
_小羊_
2024-10-16
780
【C++】list的模拟实现
list是带头双向循环链表,它与我们之前学习的string和vector的最大区别是物理结构不同,string和vector在逻辑上和物理上都是连续的,但list只在逻辑上连续。 list由一个个节点组合而成,一个节点内存有数据、上一个节点的地址和下一个节点的地址,为了方便处理这里我们将一个节点封装成一个类,这个类还需要我们显示写构造函数,当我们创建一个新节点时需要调用这个默认构造完成对新节点的初始化。 为了使节点类存储不同类型的数据,可以将这个节点类设计为节点类模版。
_小羊_
2024-10-16
770
【C++】vector及模拟实现
为了方便打印vector中不同类型的数据,可以将迭代器遍历和范围for遍历封装成一个模版函数,有几点需要注意:
_小羊_
2024-10-16
700
【C++】string类——模拟实现
通过模拟实现string类的主要接口可以使我们对string类的理解更加透彻,深入理解内存管理,可以更好地理解字符串在内存中的存储方式,以及如何进行内存分配和释放,从而避免常见的内存泄漏和溢出问题,加深对面向对象编程理念的理解,比如封装、继承和多态。
_小羊_
2024-10-16
870
点击加载更多
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档