
c++深入学习—入门到精通
文章平均质量分 92
深入c++语法细节,并且配以实例。
我吃西蓝花
用最简洁和细致的语言,实现最清晰和明确的表达 | 目前做优质的c/c++技术栈专栏
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++的四种规范的类型转换
dynamic_cast用于将一个父类对象的指针/引用转换为子类对象的指针或引用(动态转换) 向上转型:子类对象指针/引用->父类指针/引用(不需要转换,赋值兼容规则) 向下转型:父类对象指针/引用->子类指针/引用(用dynamic_cast转型是安全的)static_cast:用于非多态类型的转换(静态转换),编译器隐式执行的任何类型转换都可用 static_cast,但它不能用于两个不相关和const与非const的类型进行转换。1. dynamic_cast只能用于父类含有虚函数的类。原创 2024-09-05 22:24:16 · 571 阅读 · 0 评论 -
RAII与智能指针-c++
什么是内存泄漏:内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内 存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对 该段内存的控制,因而造成了内存的浪费。内存泄漏的危害:长期运行的程序出现内存泄漏,影响很大,如操作系统、后台服务等等,出现 内存泄漏会导致响应越来越慢,最终卡死// 1.内存申请了忘记释放// 2.异常安全问题Func();// 这里Func函数抛异常导致 delete[] p3未执行,p3没被释放.原创 2024-06-10 23:08:11 · 768 阅读 · 0 评论 -
红黑树(STL-ordered_map)
结论2:有n个内部结点的红黑树的高度为h=2^(h/2)-1-->log2(n+1)iterator++:iterator++的所指结点,为其右子树的最大值(最左结点),无右子树时,为某一祖先,即从下向上遍历,第一个祖先的左孩子为该iterator所指结点的祖先。类似AVL树,复用旋转函数,但是少了平衡因子变化。原创 2024-03-20 17:26:04 · 1031 阅读 · 0 评论 -
数据结构—堆:STL-priority_queue
1. 优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。2. 此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元 素)。3. 优先队列被实现为容器适配器,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从特定容器的“尾部”弹出,其称为优先队列的顶部。4. 底层容器可以是任何标准容器类模板,也可以是其他特定设计的容器类。empty():检测容器是否为空。原创 2024-01-29 23:52:02 · 437 阅读 · 0 评论 -
左值与右值,以及与其相关的c++11的重要特性1。
1. 左值引用只能引用左值,不能引用右值。2.但是const左值引用既可引用左值,也可引用右值。int main()// 左值引用只能引用左值,不能引用右值。int a = 10;// ra为a的别名// 编译失败,因为10是右值// const左值引用既可引用左值,也可引用右值。return 0;1. 右值引用只能右值,不能引用左值。2.但是右值引用可以move以后的左值。int main()// 右值引用只能右值,不能引用左值。原创 2024-04-02 18:07:49 · 1093 阅读 · 0 评论 -
c++11的重要特性2
可变参数模板在3中。原创 2024-04-06 21:14:54 · 654 阅读 · 0 评论 -
c++11的重要特性3
同时还用到了C++11的另外一个特性——初始化列 表,通过初始化列表来初始化一个变长数组, {(printarg(args), 0)...}将会展开成((printarg(arg1),0), (printarg(arg2),0), (printarg(arg3),0), etc... ),最终会创建一个元素值都为0的数组int arr[sizeof...(Args)]。的, 只能通过展开参数包的方式来获取参数包中的每个参数,这是使用可变模版参数的一个主要特 点,也是最大的难点,即如何展开可变模版参数。原创 2024-04-06 21:14:15 · 815 阅读 · 0 评论 -
二叉搜索树
情况4:在它的右子树中寻找中序下的第一个结点(关键字最小),用它的值填补到被删除节点 中,再来处理该结点的删除问题--替换法删,或者在左子树中寻找中序下的最后一个结点,交换此结点与删除结点的值,将其转换为对左子树最右结点的删除(情况1或者2).对有n个结点的二叉搜索树,若每个元素查找的概率相等,则二叉搜索树平均查找长度是结点在二 叉搜索树的深度的函数,即结点越深,则比较次数越多。情况3:删除该结点且使被删除节点的双亲结点指向被删除结点的右孩子结点--直接删除。删除和插入有递归和非递归两个版本。原创 2024-02-17 22:46:24 · 849 阅读 · 0 评论 -
c++多态
多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了 Person。Person对象买票全价,Student对象买票半价。那么在继承中要构成多态还有两个条件:1. 必须通过基类的指针或者引用调用虚函数2. 被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写。原创 2024-01-28 22:02:53 · 908 阅读 · 0 评论 -
c++继承
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象 程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。teacher t1;原创 2024-01-25 15:05:59 · 1006 阅读 · 0 评论 -
STL中的stack、queue以及deque
1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行 元素的插入与提取操作。2. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定 的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。empty:判空操作back:获取尾部元素操作push_back:尾部插入元素操作pop_back:尾部删除元素操作。原创 2024-01-17 16:10:19 · 1373 阅读 · 0 评论 -
STL-list的使用简介
因为list的底层结构为带头结点的双向循环链表,因此在list中进行插入时是不会导致list的迭代 器失效的,3. list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高 效。2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向 其前一个元素和后一个元素。,比如:要访问list 的第6个元素,必须从已知的位置(比如头部或者尾部)迭代到该位置,在这段位置上迭代需要线性的时间开销;原创 2024-01-11 17:01:37 · 453 阅读 · 0 评论 -
STL-vector常用接口实现
c++原创 2024-01-06 18:19:13 · 502 阅读 · 0 评论 -
STL-vector
构造函数声明接口说明vector()(重点)无参构造构造并初始化n个val(重点)拷贝构造使用迭代器(任意类型)进行初始化构造改变内存的容量以及insert与erase迭代器对象后,会导致迭代器失效迭代器失效解决办法:在使用前,对迭代器重新赋值即可。原创 2024-01-04 15:51:47 · 1144 阅读 · 1 评论 -
string类
字符串转整形数字字符串相加string类的文档介绍 总结:注意:1. 在string尾部追加字符时,s.push_back(c) / s.append(1, c) / s += 'c'三种的实现方式差不多,一般 情况下string类的+=操作用的比较多,+=操作不仅可以连接单个字符,还可以连接字符串。 2. 对string操作时,如果能够大概预估到放多少字符,可以先通过reserve把空间预留 好。 上面的几个接口大家了解一下,下面的OJ题目中会有一些体现他们的使用。string类中还有一些其他的 操作,原创 2023-12-29 10:56:58 · 1012 阅读 · 1 评论 -
计算机组成原理:数据在内存中的存储(简析)
char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形float //单精度浮点数double //双精度浮点数//C语言有没有字符串类型?以及他们所占存储空间的大小。类型的意义:1. 使用这个类型开辟内存空间的大小(大小决定了使用范围)。2. 如何看待内存空间的视角。大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址 中;小端(存储)模式,是指数据的低位保存在内存的低地址。原创 2023-10-06 20:37:28 · 396 阅读 · 1 评论 -
c++-STL简介(了解)
简述c++的标准模板库原创 2023-09-30 18:28:16 · 195 阅读 · 2 评论 -
c++模板初阶
本文简要介绍了模板的几个初学者所需要掌握的知识原创 2023-09-30 18:15:35 · 198 阅读 · 1 评论 -
c/c++内存管理
本文详细介绍了内存分布,由浅入深,介绍c++动态内存分布的关键字和底层实现原理原创 2023-09-28 08:39:28 · 178 阅读 · 1 评论 -
c++类和对象3
c++类与对象的细节知识点原创 2023-09-26 11:13:47 · 291 阅读 · 3 评论 -
c++类和对象-2(深入了解6个默认成员函数)
对类的六个默认成员函数进行深入分析,并且给予详细介绍和详细代码。原创 2023-09-23 21:04:07 · 396 阅读 · 1 评论 -
c++类和对象-1(基础知识介绍)
本文介绍了类和对象的基础概念和关键字,随后介绍了类的基本知识和使用方法,深入解析类的模型。原创 2023-09-18 19:16:27 · 114 阅读 · 0 评论 -
c++与c语法差别-c++入门基础知识
注意:早期标准库将所有功能在全局域中实现,声明在.h后缀的头文件中,使用时只需包含对应 头文件即可,后来将其实现在std命名空间下,为了和C头文件区分,也为了正确使用命名空间, 规定C++头文件不带.h;1、输入和输出使用cout标准输出对象(控制台)和cin标准输入对象(键盘),必须包含头文件以及按命名空间使用方法使用std。2、cout和cin是全局的流对象,endl是特殊的c++符号,表示换行输出,他们都包含在头文件中。3、是流提取符。原创 2023-05-13 17:10:45 · 705 阅读 · 2 评论