
C++
文章平均质量分 91
重点+思考 记录
lvy-
Practice is the sole criterion for testing. email: lvy_fighting95@163.com
展开
-
[Sum] C++STL oj常用API
xmind & sum原创 2025-03-14 16:43:11 · 540 阅读 · 0 评论 -
C++11 异步操作 future类_文档学习
notes原创 2025-02-17 13:10:59 · 1003 阅读 · 0 评论 -
What is Json?
Notes原创 2025-01-21 23:03:39 · 1114 阅读 · 1 评论 -
[C++11#48][智能指针] RAII原则 | 智能指针的类型 | 模拟实现 | shared_ptr | 解决循环引用
本文探讨智能指针的重要性,介绍内存泄漏及其分类,并通过RAII原则说明智能指针如何管理和自动释放资源。通过实例分析string浅拷贝问题及解决方案,详细讲解auto_ptr、unique_ptr、shared_ptr与weak_ptr的使用与实现,最后讨论智能指针的线程安全性和循环引用问题。原创 2024-09-09 15:39:40 · 1468 阅读 · 36 评论 -
[C++#33][异常] 错误码 | 抛出与捕获 | 异常安全 | 异常体系
本文探讨了C与C++在错误处理上的差异,从传统错误码及断言机制到C++先进的异常处理机制及其安全性和资源管理特性,并通过实例展示自定义异常体系的构建与应用。原创 2024-09-07 09:34:45 · 2328 阅读 · 71 评论 -
[C++#28][多态] 两个条件 | 虚函数表 | 抽象类 | override 和 final | 重载 重写 重定义
本文详细介绍了C++中虚函数的基础与高级特性,涵盖虚函数的重写、协变、多态的构成与细节,以及虚函数表的工作原理,并探讨抽象类、继承类型和多态的使用条件与差异。原创 2024-09-05 12:56:11 · 1342 阅读 · 4 评论 -
[C++11#47] (四) function包装器 | bind 函数包装器 | 结合使用
本文介绍 function 包装器在问题求解中的应用,包括使用 bind 绑定调整参数顺序及对类方法的包装技巧。原创 2024-09-04 20:19:14 · 1271 阅读 · 0 评论 -
[C++11#46](三) 详解lambda | 可变参数模板 | emplace_back | 默认的移动构造
本文介绍C++中的lambda表达式和可变参数模板。首先探讨lambda的捕捉列表与底层实现,随后讲解可变参数模板的递归展开、数组接收及应用,包括emplace_back的使用,以及移动构造与拷贝构造的区别与默认生成。原创 2024-09-04 16:01:47 · 1228 阅读 · 0 评论 -
[C++11#45](二) 右值引用 | 移动语义 | 万能引用 | 完美转发forward | 初识lambda
本文首先介绍了C++中的左值和右值概念,并详细对比了左值引用与右值引用的区别。通过探讨右值引用实现的底层优化,特别是在容器和字符串处理中的应用,展示了其在提高性能方面的重要作用。接着,文章阐述了完美转发技术,包括万能引用的概念及其如何实现数据类型的精确传递。此外,补充讨论了移动赋值操作和右值引用引用左值的特殊情况。最后,文章转向lambda表达式,简要介绍了其引入背景和基本语法,帮助读者理解这一强大的语言特性。原创 2024-09-03 21:06:28 · 1373 阅读 · 62 评论 -
[C++11#44](一) 统一的列表初始化 | 声明 | STL中一些变化 | emplace的优化 | move
本书从回忆基础概念入手,深入探讨了C++11及之后版本中引入的关键特性,包括隐式类型转换、统一的列表初始化、新型声明方式、范围for循环、智能指针以及STL的新容器和接口改进。通过实例讲解final与override关键字的使用,帮助读者掌握现代C++编程的核心技术。原创 2024-09-02 22:27:06 · 1355 阅读 · 32 评论 -
[C++][STL源码剖析] 详解AVL树的实现
探索AVL树,自平衡二叉搜索结构,保障对数级效率。详解初始化、插入与旋转(左、右、双旋)机制,平衡因子调整,附带代码实例,延伸至节点删除挑战。原创 2024-07-24 15:39:49 · 2501 阅读 · 91 评论 -
【C++】关联容器探秘:Map与Multimap详解
探索C++ STL中Map与Multimap的奥秘,从Pair的基本操作到Map的插入、遍历,深度解析Operator[]机制。对比Map与Unordered_Map,掌握Multimap特性和使用技巧,包括删除操作,全面理解关联容器应用原创 2024-07-23 23:16:05 · 2017 阅读 · 51 评论 -
【C++】详解 set | multiset
本文探讨了C++标准模板库中set与multiset容器的使用,涵盖构造、插入、查找、删除等基本操作,并解析lower_bound、upper_bound及equal_range函数的高效区间搜索机制,为高效数据管理提供实战指南。原创 2024-07-22 21:12:52 · 4428 阅读 · 9 评论 -
15. 【C++】详解搜索二叉树 | KV模型
为了更好地理解 map 和 set 的特性,和后面讲解查找效率极高的平衡搜索二叉树,和红黑树去实现模拟,所以决定在这里对搜索二叉树进行一个讲解~原创 2024-07-19 15:18:22 · 2337 阅读 · 84 评论 -
13. C++继承 | 详解 | 虚拟继承及底层实现
深入解析了C++中继承的核心概念,涵盖定义、作用域规则、成员函数、友元与静态成员处理,以及复杂议题如菱形继承和虚拟继承,辅以反思与常见问题解答。原创 2024-07-18 22:38:20 · 1384 阅读 · 55 评论 -
12.C++模板进阶 | 代码膨胀
探索C++模板的世界,从基本概念到高级技巧,包括非类型模板参数的使用、模板特化的细节、以及模板在分离编译场景下原创 2024-07-17 16:31:49 · 1709 阅读 · 12 评论 -
【C++】手动模拟String底层与深浅拷贝
总体整理了两张思维导图,XMind资源已经上传啦,可以按需下载~模拟实现string是为了更好的理解string函数的使用。原创 2024-06-05 17:18:47 · 475 阅读 · 2 评论 -
10.STL中stack和queue的基本使用(附习题)
快一起来学习stack和queue吧原创 2024-05-24 11:02:40 · 2153 阅读 · 84 评论 -
9.STL中list的常见操作(图文并茂)
快来学习list的使用吧原创 2024-05-18 11:58:17 · 2034 阅读 · 23 评论 -
8.STL中Vector容器的常见操作(附习题)
总结了vector的基本操作和增删查改,并介绍了Leetcode习题136和118.原创 2024-05-17 11:46:29 · 1410 阅读 · 50 评论 -
7.C++中string的一些超常用函数 (附习题)
本文总结了find、atoi、to_string、getline等函数的用法,并介绍了LeetCode习题387和125。原创 2024-05-14 11:39:02 · 1582 阅读 · 50 评论 -
7.学习STL和string类:版本、组件、构造、操作及应用
STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且 是一个包罗数据结构与算法的软件框架。原创 2024-05-11 21:30:34 · 2099 阅读 · 71 评论 -
6.C++模板(超全)
在编译器编译阶段,对于模板函数的使用,编译器需要根据传入的实参类型来推演生成对应类型的函数以供调用。如果类型不匹配,编译器会尝试进行隐式类型转换,如果无法转换成功编译器将会报错,但编译器的转化是不确定的,所以不要把未知交给编译器。1. 重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函数。1. 一个非模板函数可以和一个同名的函数模板同时存在,而且该函数模板还可以被实例化为这个非模板函数。用不同类型的参数使用函数模板时,称为函数模板的实例化。,那将会节省许多头发。原创 2024-05-01 17:09:59 · 1406 阅读 · 9 评论 -
5.C++动态内存管理(超全)
/ new/delete 和 malloc/free最大区别是 new/delete对于// 【自定义类型】除了开空间还会调用构造函数和析构函数int main()free(p1);delete p2;free(p5);打印出来的部分效果如图注意:在申请自定义类型的空间时,new会调用构造函数,delete会调用析构函数,而malloc与free不会。3.3。原创 2024-05-01 11:51:46 · 1557 阅读 · 33 评论 -
4. C++类和对象(下)
在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称为对对象中成员变量的初始化,构造函数体中的语句只能将其称为赋初值,而不能称作初始化。因为初始化只能初始化一次,而构造函数体内可以多次赋值。原创 2024-04-27 23:50:37 · 701 阅读 · 7 评论 -
3.C++类和对象(中)
1.类的6个默认成员函数如果一个类中什么成员都没有,简称为空类。空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。默认成员函数:用户没有显式实现,成员函数称为默认成员函数。2.构造函数2.1概念对于以下Date对于Date类,可以通过 Init 公有方法给对象设置日期,但如果每次创建对象时都调用该方法设置信息,未免有点麻烦,那能否在对象创建时,就将信息设置进去呢?构造函数是一个特殊的成员函数,原创 2024-04-26 19:51:14 · 1119 阅读 · 3 评论 -
2.C++类和对象(上)
1.oj:声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。类声明放在.h文件中,成员函数定义放在.cpp文件中,注意:成员函数名前需要加类名::类的命名规则:一般在成员变量前加_,来区分赋值,例如 _year= year,这样就区分开了。原创 2024-04-25 09:32:05 · 1235 阅读 · 2 评论 -
1.C++入门(下)
auto修饰具有自动存储的局部变量,作为一个新的类型指示符来指示编译器,auto声明的变量在编译时期推导而得int main()int a=10;auto b=a;//会自动存储b为int型注意:auto变量必须初始化。原创 2024-04-24 16:05:21 · 960 阅读 · 0 评论 -
1.C++入门(中)
以值作为参数或者返回值类型,在传参和返回期间,函数不会直接传递实参或者将变量本身直接返回,而是传递实参或者返回变量的一份临时的拷贝,因此用值作为参数或者返回值类。文件中没有 Add 的函数地址,因为 Add 是在 b.cpp 中定义的,所以 Add 的地址在 b.o 中。可以知道,【当前 a.cpp 中调用了 b.cpp 中定义的 Add 函数时】,编译后链接前, a.o 的目标。),相当于是一个将d拷贝到临时变量中,再拷贝到rd中,所以rd接收到的是一个常量性数值,要加const。原创 2024-04-23 09:14:43 · 1050 阅读 · 1 评论 -
1.C++入门(上)
使用到namespace命名空间的名字{ }1.正常的命名空间定义2.命名空间可以嵌套3.同一个工程中允许存在多个相同的命名空间,编译器最后会合成到一个空间中ps: 一个工程中的.h和上面的.cpp中两个N1会被合并成一个注意:一个命名空间就定义了一个新的作用域。原创 2024-04-22 23:21:29 · 1580 阅读 · 2 评论 -
0.什么是C++(专栏前言)
20世纪80年代,计算机界提出oop(object oriented programming:面向对象)思想,支持面向对象的程序设计应运而生。1982年,本贾尼在c语言的基础上引入并扩充了面向对象的概念,命名为C++。C++既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可进行面向对象的程序设计C++祖师爷--本贾尼 的照片。原创 2024-04-22 18:11:52 · 406 阅读 · 1 评论