C++
文章平均质量分 91
TT在长大
Stay hungry, Stay foolish.
展开
-
[C/C++]详解STL容器9-基于红黑树模拟实现map和set
本文基于红黑树模拟实现map和set,首先对之前模拟实现的红黑树做了一些改造,之后对map和set做了模拟实现。原创 2021-12-05 20:04:01 · 13656 阅读 · 4 评论 -
[C/C++]详解STL容器8-map、multimap、set、multiset的介绍和使用
本文介绍了map、multimap、set、multiset以及使用方法。原创 2021-12-02 22:02:24 · 4518 阅读 · 6 评论 -
[C/C++]详解STL容器7--红黑树的介绍及部分模拟实现
本文对红黑树进行了介绍,并对其核心功能进行了模拟实现。红黑树(Red Black Tree),是在计算机科学中用到的一种数据结构,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。原创 2021-12-01 17:36:50 · 7490 阅读 · 0 评论 -
[C/C++]详解STL容器6--AVL树的介绍及部分模拟实现
本文对AVL树进行了介绍,并对其核心功能进行了模拟实现。二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年发明了一种解决上述问题的方法:当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整),即可降低树的高度,从而减少平均搜索长度。原创 2021-11-22 00:32:20 · 12636 阅读 · 1 评论 -
[C/C++]详解STL容器5--二叉搜索树的介绍及模拟实现
本文对二叉搜索树进行介绍,并对其核心功能进行了模拟实现。原创 2021-11-18 22:59:53 · 4296 阅读 · 7 评论 -
[C/C++]详解C++的多态
本文详细介绍了C++中的多态,从多态的定义,到多态的原理。目录一、多态的定义及实现1.多态的构成条件2.虚函数3.虚函数的重写4.虚函数重写的例外(1)协变(2)析构函数的重写5. C++11中override 和 final(1) final(2)override6. 重载、覆盖(重写)、隐藏(重定义)二、抽象类1. 概念2. 接口继承和实现继承三、多态的原理1. 虚函数表2. 多态的原理3.动态绑定与静态绑定四、单继承...原创 2021-10-24 15:04:09 · 7075 阅读 · 13 评论 -
[C/C++]详解C++中的继承
本文从继承的概念及定义开始,介绍了基类和派生类对象赋值转换,继承中的作用域,派生类的默认成员函数,继承与友元的关系,继承与静态成员的关系,复杂的菱形继承及菱形虚拟继承。目录一、继承的概念1.概念2.继承定义二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元、静态成员六、复杂的菱形继承及菱形虚拟继承1.菱形继承2.虚拟继承解决数据冗余和二义性的原理七、继承和组合一、继承的概念1.概念面向对象程序设计中最重要的一个..原创 2021-09-27 21:34:44 · 2740 阅读 · 9 评论 -
[C/C++]C++的IO流
本文对比了C语言的输入与输出,介绍了流的概念、C++IO流以及stringstream。目录一、C语言的输入与输出二、C++中流的概念三、C++IO流1.C++标准IO流2. C++文件IO流四、stringstream一、C语言的输入与输出C语言中我们最长用到的输入输出方式就是scanf ()与printf()。scanf(): 从标准输入设备(键盘)读取数据,并将值存放在变量中。printf(): 将指定的文字/字符串输出到标准输出设备(屏幕)。...原创 2021-09-26 22:30:08 · 1778 阅读 · 4 评论 -
[C/C++]详解C++中的模板
本文主要介绍了非类型模板参数、类模板的特化、类型萃取、模板的分离编译。在之前的文章中已经对模板进行基本的介绍[C/C++]浅析C++中的模板_RMA515T的博客-CSDN博客_c++中模板目录一、非类型模板参数二、类模板的特化1.概念2.函数模板特化3.类模板全特化4. 类模板偏特化三、模板的分离编译四、模板总结一、非类型模板参数模板参数分类类型形参与非类型形参。类型形参即:出现在模板参数列表中,跟在class或者typename之类的参数类型名...原创 2021-09-26 11:16:39 · 2188 阅读 · 3 评论 -
[C/C++]详解STL容器4--stack、queue和priority_queue的功能和模拟实现,deque和容器适配器的介绍
本文介绍了stack、queue和priority_queue的常用接口的使用,并对其进行了模拟实现,还对deque和容器适配器进行了介绍。一、stack的功能和模拟实现1.stack的介绍stack<T>容器适配器中的数据是以 LIFO 的方式组织的,是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底原创 2021-09-25 11:33:05 · 2607 阅读 · 3 评论 -
[C/C++]详解STL容器3--list的功能和模拟实现(迭代器失效问题)
本文介绍了list的常用接口的使用,并对其进行了模拟实现,包括list迭代器的实现。目录一、list的介绍二、list的常用接口的使用1. list的构造2. list iterator的使用3.list capacity的使用4.list element access5.list modifiers6. list的迭代器失效三、list与vector的对比四、list的模拟实现一、list的介绍list 容器,又称双向链表容器,即该容器的底层是以双向链表原创 2021-09-24 10:22:56 · 4440 阅读 · 14 评论 -
[C/C++]详解STL容器2--vector的功能和模拟实现(迭代器失效,memcpy拷贝问题)
本文介绍了vector类的常用接口的使用,并对其进行了模拟实现,对模拟实现中涉及到的迭代器失效问题,memcpy拷贝问题进行了解析。一、vector类向量(Vector)是一个封装了动态大小数组的顺序容器(SequenceContainer)。在C++中,vector 是一个十分有用的容器。它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。就像数组vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector.原创 2021-09-23 16:33:51 · 5046 阅读 · 11 评论 -
[C/C++]详解STL容器1--string的功能和模拟实现(深浅拷贝问题)
本文介绍了string类的常用接口的使用,并对其进行了模拟实现,对模拟实现中涉及到的深浅拷贝问题进行了解析。目录一、string类1. C语言中的字符串2. C++中的string类二、string类的常用接口的使用1. string类对象的常见构造2. string类对象的容量操作3. string类对象的访问及遍历操作4.string类对象的修改操作5. string类非成员函数6.使用实例三、模拟实现1. sring类的深浅拷贝问题2. ...原创 2021-09-22 11:27:39 · 5128 阅读 · 3 评论 -
[C/C++]浅析C++中的模板
本文将对C++中的模板进行简单介绍,明确一些基本概念。模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。模板是创建泛型类或函数的蓝图或公式。原创 2021-06-05 10:42:44 · 25871 阅读 · 6 评论 -
[C/C++]C++中的内存管理
1.C++的内存管理2. 动态内存管理方式3.operator new与operator delete函数4.new和delete的实现原理原创 2021-06-03 23:21:49 · 11670 阅读 · 17 评论 -
[C/C++]详解C++的类和对象
类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。对象是具有类类型的变量。类和对象是面向对象编程技术中的最基本的概念。1.面向对象首先来理解什么是面向对象编程。C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。2.类的引入在C++中的结构体内不仅可以定义变量,也可以定义函数。在C++中常用class来代替structstruct Stud原创 2021-06-07 14:45:53 · 34103 阅读 · 25 评论 -
[C/C++]C++的命名空间,缺省参数,引用,auto关键字,内联函数等
本文主要梳理了C++当中一些琐碎的知识点,包括有命名空间,缺省参数,引用,auto关键字和内联函数。命名空间当我们有两个名字相同的同学时,为了明确区分它们,我们在使用名字之外,还会使用一些额外的信息,比如籍贯等等。在C++ 中可能会写一个名为 ADD() 的函数,而在另一个可用的库中也存在一个相同的函数 ADD()。编译器就无法判断是哪一个 ADD() 函数。所以引入了命名空间这个概念。变量、函数和类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的原创 2021-05-21 13:56:31 · 9799 阅读 · 9 评论