- 博客(167)
- 收藏
- 关注
原创 寻找最接近子数组和的算法设计及其C++实现
问题描述: 给定两个数组a和b,以及两个整数n和m,分别代表数组a和b的元素数量。任务是找到数组b中的一个连续子数组,使得该子数组的和最接近数组a中的某个元素。通过这种方式,我们成功解决了给定的问题,并提供了一个清晰、易于理解的C++实现。示例: 输入: n=2, m=6 数组a: 30, 39 数组b: 15, 29, 42, 1, 44, 1 输出: 子数组: 29, 42。上述代码通过双重循环遍历数组b中所有可能的子数组,并与数组a中的每个元素进行比较,找到和最接近的子数组。
2025-10-18 04:27:26
905
原创 C++如何进行sort的使用——C++如何进行排序
这里我通过一个案例进行讲解。案例:我们现在希望有一个排序规则,我希望奇数排在偶数前面。通过这个结果我们发现了,排序结果中奇数在前面偶数在后面,这里主要难写的地方就是这个func函数。实现代码代码语言:javascript代码运行次数:0运行AI代码解释1 : 0;1 : 0;i < 10;i ++)// 运行结果return 0;
2025-10-18 04:22:23
621
原创 【C++】剖析运算符重载和赋值运算符重载
刚开始学习的时候,我也很容易将运算符重载和赋值运算符重载弄混,很伤脑筋,但其实是要想想一个是比较的,一个是赋值的,就可以理解了。其实最容易弄混的是赋值运算符重载和拷贝构造函数,刚开始的时候不懂他们的区别,经过理解还是相对容易哒~
2025-10-18 03:57:46
990
原创 【C++】简易了解内部类,匿名对象和对象拷贝时的编译器优化
框架构造:list是吧每个节点连接起来,故首先把节点封装成一个类,接着由于迭代器相当于节点指针,即双向迭代器,只能是++或者--无-,+即还要对迭代器去遍历链表,可以把迭代器封装也成一个类。这里的template<class T,class ref,class ptr >是为了少写一次const迭代器的类,而多加了对原来的类的模版参数可以实例化出const和普通的迭代器类。这里其实和vector的迭代器不一样,这里插入不会导致迭代器失效,因为它所指向的对象并没有改变,而只是在它前面插入新节点。
2025-10-18 03:54:41
786
原创 C++ 中友元类和友元函数有什么作用?
友元函数:允许一个非成员函数访问类的私有和保护成员,用于实现类的外部操作。友元类:允许一个类的所有成员函数访问另一个类的私有和保护成员,用于实现类之间的紧密协作。
2025-10-18 03:53:19
658
原创 C++ 中 struct 和 class 的区别?
struct:默认成员和继承都是public,通常用于表示简单的数据结构。class:默认成员和继承都是private,通常用于表示复杂的对象,包含更多的行为和封装。
2025-10-18 03:46:14
892
原创 C++ 如何实现线程池?给出大体思路?
线程池:管理一组工作线程,提高多线程程序的性能和资源利用率。任务队列:存储待处理的任务,确保线程安全。工作线程:从任务队列中获取任务并执行。同步机制:使用互斥锁和条件变量确保线程安全。
2025-10-18 03:42:15
974
原创 C++ QT 中信号和槽的原理是什么
线程局部存储关键字确保每个线程都有自己的变量副本,避免了多线程环境下的数据竞争问题。初始化变量在第一次被访问或执行到时进行初始化。
2025-10-18 03:27:26
533
原创 C++ 如何进行性能优化?
学习完C++类和对象,我们可以实现一个说简单也不简单的日期计算功能,该功能涉及大量的运算符重载知识点及细节,可谓是细节重重,那么本篇将手把手教会你自己写一个日期计算器😎。
2025-10-18 03:21:17
747
原创 【C++】看不懂多态?这篇文章带你吃透它
该内容中的代码以及解释都是在 vs2022下的 x86环境中,涉及的指针都是 4个字节,如果要在其他的平台下运行,部分代码需要改动。继承关系。必须通过基类的指针或者基类的引用调用虚函数,这个过程也称为向上转型。被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行了重写。 那么问题来啦,什么是虚函数?重写又是什么?请看下面!重载:两个函数必须在同一作用域。函数名相同,参数不同。隐藏(重定义):两个函数分别在基类和派生类的作用域中。只要求函数名相同。
2025-10-18 03:19:17
259
原创 C++输出新年祝福的那些方式
本文从输出和字符串拼接两个方面提出了6种打印方案,也欢迎大家在评论区留言,提出更好的方式。字符串由字面意思便可知是由多个字符组成,通常是char组成的串,涉及到中文时应为wchar_t,故此可以通过。是 C 语言中的标准输出函数,在 C++ 中也可以使用。在处理 Unicode 字符时,尤其是涉及中文字符的输出时,它非常有用。是 C++ 中的标准字符串类,它允许我们操作动态大小的字符串,并可直接用于输出。是 C++ 标准库提供的输出字符串流,适用于将输出内容存储为字符串并进一步处理。
2025-10-18 03:05:39
427
原创 【C++】设计模式详解:单例模式
为了克服这些局限性,斯特劳斯特鲁普在 C 语言的基础上引入了面向对象的编程概念,开发出了一种新的编程语言,最初被称为 “C with Classes”(带类的 C),后来正式命名为 C++。例如,在北上广深等一线城市,初级 C++ 开发者的月薪可能在 8000 - 12000 元左右,中级开发者的月薪可能在 12000 - 20000 元左右,高级开发者的月薪可能超过 20000 元。例如,在开发一款 3D 游戏时,需要使用 C++ 来实现游戏的渲染引擎,处理复杂的图形计算和光照效果。
2025-10-18 03:04:54
844
原创 解决带空格的字符串输入问题:C/C++中的几种常用函数
gets:不推荐使用,存在缓冲区溢出问题,C++11已废弃。fgets:推荐使用,安全且能处理带空格的字符串,避免溢出问题。scanf:可以通过%[^\n]格式读取带空格的字符串,但需要小心缓冲区溢出。getchar:逐个字符读取,适合需要精细控制输入的场景。C++中的getline:推荐的方式,能自动管理缓冲区,简洁且高效。根据不同的需求和场景,选择合适的方法进行带空格字符串的输入处理,确保程序的安全性和可维护性。
2025-10-18 03:03:11
588
原创 【C++ 函数重载】—— 现代编译技术下的多态表达与性能优化
概念函数重载允许在同一作用域内定义多个同名但参数列表不同的函数。编译器会根据调用时提供的实参信息,自动选择合适的函数进行调用。这使得程序员可以使用相同的函数名来处理不同类型或不同数量的参数,让代码更符合人类的思维习惯。规则参数列表必须不同:可以通过参数的个数、类型或顺序来体现差异。例如和(参数个数不同);和(参数类型不同);和(参数顺序不同)均构成函数重载。返回值类型不能作为重载依据:仅返回值类型不同的函数不能构成重载,因为在调用函数时,编译器无法根据返回值类型来确定调用哪个函数。底层原理。
2025-10-17 03:00:57
277
原创 C++20 协程:异步编程的演进
协程是一种支持暂停和恢复的函数,允许在执行过程中将控制权交还给调用者,并在适当时候继续执行。co_await:暂停协程,等待异步操作完成。co_yield:生成值并暂停,适用于序列生成等场景。co_return:指定协程的返回值并结束执行。与线程不同,协程在用户态管理上下文切换,避免了内核态的开销,因而适用于高并发、低延迟的场景。
2025-10-17 02:58:55
338
原创 C++20中的约束与概念:开启模板编程的新篇章
在C++20中,约束(Constraint)可以关联到类模板、函数模板、类模板成员函数,指定了对模板实参的一些要求。而概念(Concept)则是这些要求的集合。概念本质上是一种编译时检查机制,允许开发者为模板参数定义一组约束条件。定义一个概念的基本语法如下:代码语言:cpp代码运行次数:0运行AI代码解释concept MyConcept = /* 条件表达式 */;例如,可以定义一个名为Integral的概念,用于检查类型是否为整数类型:代码语言:cpp代码运行次数:0运行AI代码解释。
2025-10-17 02:56:54
390
原创 【C++】可变参数模板
ShowList函数中的逗号表达式:(PrintArg(args),0),也是按照这个执行顺序,先执行 PrintArg(args),再得到逗号表达式的结果 0。同时还用到了。
2025-10-17 02:56:12
324
原创 【C++修炼之路】类与对象实战:实现一个日期类
要想实现上面的功能,我们需要三个内部成员来表示日期(年、月、日),在通过各种函数来实现各种功能代码语言:javascript代码运行次数:0运行AI代码解释class Date//友元声明public://构造函数//拷贝构造函数//打印日历//操作符重载// 获取某年某月的天数// 日期类成员private:int _year;// 年int _month;// 月int _day;// 日。
2025-10-17 02:54:30
275
原创 c++:迭代器的失效
迭代器的失效分为两种1扩容时候出现,但是还是有四十it扩容后失效 临时变量具有常性不能引用综上不能改变形参加引用,所以it是扩容要失效的办法是把返回方式改为iterator,更新it本质是扩容引起的野指针的问题2删除引起的野指针失效vs进行了强制的检查我们自己写的失效会报错,但是vs会强制检查,直接报错,不让你检查所以迭代器一般不失效,但是insert和erase后访问迭代器会失效。挪动位置的逻辑检查。it 失效erase失效,借助返回值去更新。
2025-10-17 02:53:29
278
原创 【C++模板】:开启泛型编程之门(函数模版,类模板)
代码语言:javascript代码运行次数:0运行AI代码解释class 类模板名 {// 类内成员定义以实现一个简单的栈类模板为例:代码语言:javascript代码运行次数:0运行AI代码解释public:_size = 0;// 扩容逻辑++_size;注意:类模板中可以定义成员函数模版,但是类模板里面的成员函数不一定是函数模版。
2025-10-17 02:51:01
271
原创 C++20中的`std::endian`:深入理解大端/小端/本地字节序
是一个枚举类,定义在<bit>:表示小端字节序。:表示大端字节序。:表示当前系统的本地字节序。通过比较与或,可以判断当前系统是小端还是大端。为C++开发者提供了一种标准化的方式来处理字节序问题。通过理解和使用,可以编写出更健壮、更可移植的代码,避免因字节序差异导致的错误。希望这篇文章能帮助你更好地理解C++20中的以及字节序的相关知识。
2025-10-17 02:47:20
401
原创 【C++11】新的类功能
在上面的代码,可能大家对继承的定义还不太清楚,我们接下来就来掀开它的神秘面纱~上面的代码定义了一个简单的类继承体系,其中包含一个基类(或者叫父类)Animal和两个派生类(或者叫子类)Dog(狗)和Bird(鸟),每个类都有其特定的属性和方法~继承方式和访问限定符都有三种:不同的继承方式和不同的访问限定符组合决定了派生类(子类)如何访问基类(父类)的成员(属性和方法),我们来看看下面这张图~基类private成员在派生类中无论以什么方式继承都是不可见的。
2025-10-17 02:46:34
960
原创 【C++修炼之路】C++动态内存管理
代码语言:javascript代码运行次数:0运行AI代码解释class Apublic:: _a(a)~A()private:int _a;int main()// new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数free(p1);delete p2;// 内置类型是几乎是一样的// Cfree(p3);delete p4;free(p5);return 0;
2025-10-17 02:45:36
368
原创 【C++指南】一文总结C++类和对象【下】
时,只需要调用n次构造函数,由于是静态成员,生命周期被延长了,使得_i能表示1、2...,每次将_i的值给_count即得最终答案。在上面这段程序中,定义了int类型的变量a,double类型的b引用a,此时会发生隐式类型转换,而这里的类型转换会产生一个临时对象,这个临时对象具有常性,因此需要加const。在上面这段程序中,我们期望的是1调用构造函数,然后再调用拷贝构造初始化对象aa1,但是通过调试发现调用完构造函数并未调用拷贝构造。,返回对象aa,由于是在f2的栈区中,不能直接返回,编译器理应会。
2025-10-17 02:43:48
299
原创 DeepSeek 助力 C++ 开发:探索智能编程新境界
在实际的 C++ 开发中,开发者应该将 DeepSeek 作为一种辅助工具,结合自己的专业知识和经验,对生成的代码进行审查和优化。这些场景需要开发者具备深厚的专业知识和丰富的实践经验,DeepSeek 只能提供一些基本的思路和框架,开发者需要在此基础上进行深入的研究和开发。在大型 C++ 项目中,合理的代码模块划分和组织可以提高代码的可维护性和可扩展性。虽然 DeepSeek 可以生成类似的多线程代码框架,但对于更复杂的多线程场景,如多个线程之间的协作、线程池的实现等,可能无法提供全面和准确的解决方案。
2025-10-17 02:42:51
954
原创 【C++11】:原始字符串字面量
用户定义字面量,也被称为【自定义后缀】,其主要作用就是为了简化代码的读写! 它的格式如下:代码语言:javascript代码运行次数:0运行AI代码解释返回值类型 operator"" 自定义后缀名称(参数列表)函数体 下面我们来看个例子:代码语言:javascript代码运行次数:0运行AI代码解释// 用户自定义字面值, 或者叫“自定义后缀”更直观些, 主要作用是简化代码的读写。// 自定义变量,名字要求operator"" xxxreturn x;
2025-10-16 04:19:07
885
原创 C++红黑树的深入解析:从理论到实践
红黑树是一种自平衡的二叉搜索树,通过简单的规则保证树的平衡性,确保了查找、插入和删除操作的时间复杂度始终为 O(log N)。虽然红黑树的插入、删除操作相对复杂,但它的高效性和稳定性使其成为许多应用中不可或缺的数据结构。希望通过本文的详细解析,大家能够对红黑树有更深入的了解。
2025-10-16 04:17:05
575
原创 【C++11】左值引用、右值引用和移动语义
学习 C++ 是一个长期的过程,需要定期复习所学的知识,总结经验教训。可以制作笔记,记录重要的知识点和遇到的问题,以便在需要时查阅。同时,也可以通过做练习题和小项目来巩固所学的知识。
2025-10-16 03:55:38
632
原创 C++异常处理完全指南:从原理到实战
如何通过 throw 抛出异常,并通过 catch 捕获处理。通过多个 catch 语句来处理不同类型的异常。异常的重新抛出以及其应用。异常安全,如何通过智能指针避免资源泄漏。如何使用标准库中的异常类来捕获和处理常见的错误。这些例子展示了 C++ 异常处理机制在实际编程中的强大作用,可以帮助程序员有效地管理和应对程序运行中的错误。
2025-10-16 03:54:22
721
原创 【C++11】左值引用、右值引用和移动语义
希望这篇关于 C++11之左值引用,右值引用和移动语义 的博客能对大家有所帮助,欢迎大佬们留言或私信与我交流.学海漫浩浩,我亦苦作舟!关注我,大家一起学习,一起进步!
2025-10-16 03:48:36
850
原创 【C++】Chapter02 内存管理
newdelete是操作符,而C语言中的mallo等是函数。在 C++ 中,new和deletenew关键字在堆(heap)上分配内存,并返回指向该内存的指针。delete关键字释放由new分配的内存,避免内存泄漏。在自定义类型中,new/delete和malloc/free的最大区别是前者除了开辟和释放空间,还会调用构造函数和析构函数。代码语言:javascript代码运行次数:0运行AI代码解释class Apublic:: _a(a)~A()private:int -a;
2025-10-16 03:42:09
874
原创 【C++】Chaper03 函数模板与泛型
模板在三大件——office中,经常有样式这个词出现;C++中的模板其实和它差不多。学习C语言的时候,我们经常要写一个函数叫做Swap,但是由于经常要指定参数的类型,所以可能不止要写一种。代码语言:javascript代码运行次数:0运行AI代码解释那么有没有一个方法来实现通用的函数呢?这就是模板出现的作用所在。
2025-10-16 03:39:07
704
原创 C++ 选择 引用传递还是指针传递
在C++编程中,选择引用传递(pass-by-reference)还是指针传递(pass-by-pointer)取决于具体的需求和上下文。下面是一些关于它们各自特点和适用场景的分析:总的来说,除非特殊需求(如需要表示空值或动态改变指向),应优先使用引用,因为它更安全、更直观。在性能方面,两者差异通常可以忽略不计。引用传递相对较优。
2025-10-16 03:35:15
261
原创 【C++】从静态到动态:多态的诗意旅程
多态的概念多种形态。多态分为编译时多态静态多态)和运行时多态动态多态编译时多态静态多态)主要就是函数重载和函数模板,他们传不同类型的参数就可以调用不同的函数,通过参数类型的不同达到多种形态。之所以叫编译时多态,是因为实参传给形参是在编译时完成的。运行时多态动态多态),具体点就是去完成某个行为(函数),可以传不同的对象就会完成不同的行为,就达到多种形态。比如买票这个行为,当普通人买票时,是全价买票;学生买票时,是优惠买票;军人买票时是优先买票。动态多态是一个继承关系下的类对象,去调用同一函数,生了不同的行为。
2025-10-16 03:30:01
870
原创 C++ 实现单例模式的几种方法
在开发中,有时候会需要一些类在项目的生命周期中只有一个实例。这样的设计被称作单例模式。本文用于记录项目开发过程中,设计日志管理器时用到的单例模式,以及开发过程中的一些学习和思考。
2025-10-16 03:24:22
593
原创 Python到C++: 函数与面向对象编程(OOP)
在这篇文章中,我们探讨了 C++ 中函数的定义与返回值、参数传递方式、构造函数、析构函数、继承和多态等重要概念。每个函数都拥有返回类型、函数名和参数列表,函数执行后返回相应的结果。C++ 是一种支持面向对象编程(OOP)的语言,它通过封装、继承和多态来提供强大的结构化设计能力。继承是 OOP 的核心概念之一,它允许子类继承父类的成员函数和数据成员,从而实现代码复用。多态是 C++ 中的一项强大特性,它允许同一个接口以不同的方式进行操作。C++ 支持三种传递参数的方式:按值传递、按引用传递和按指针传递。
2025-10-16 03:21:32
706
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅