自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(241)
  • 收藏
  • 关注

原创 【TCP服务器的演变过程】编写第一个TCP服务器:实现一对一的连接通信

C++ 作为一门强大的系统级编程语言,拥有深厚的技术积累和广泛的应用场景。而 Go、Rust 和 C# 各自在不同领域展现出独特的优势。Go 语言在云原生和高并发领域表现卓越,语法简洁,开发效率高;Rust 以其内存安全和高性能,在系统级开发和安全领域占据一席之地;C# 则在企业级应用和游戏开发方面拥有强大的生态支持,其中C++ 选手在选择学习新语言时,可根据自身兴趣和职业规划进行决策。若希望进入云原生和 DevOps 领域,Go 语言是不错的选择;

2025-10-31 23:41:23 844

原创 C++干货基地】C++模板深度解析:进阶技巧与高级特性掌握

一般情况下如果函数模板遇到不能处理或者处理有误的类型,为了实现简单通常都是将该函数直接给出。

2025-10-31 23:36:31 587

原创 VS2022中C++导入三方库方法及问题

文章需要你懂得什么是第三方库,什么是头文件,什么是库文件(静态/动态),你需要事先安装好VS2022并选择按安装了C++开发环境(换言之,我认为你至少用过C++,并成功输出过hello world)。首先,新建一个Cpp项目(控制台项目即可,其他项目也无所谓),右键点击项目名称(Test1)选择属性或者在VS2022工具栏选择调试标签->属性按钮打开属性页。注意: 在开始其他操作前请注意先进行配置和平台选项框的选择。配置选框选定了是配置为DeBug模式还是Release模式。

2025-10-31 23:36:17 782

原创 【C++篇】揭秘STL vector:高效动态数组的深度解析

这里主要以介绍vector常用接口的方式进行讲解,由于vector的接口与过去所学的string的接口雷同,许多接口直接平移使用即可。 使用vector需包头文件: 使用格式:构造函数声明接口说明vector()(重点)无参构造vector(size_type n, const value_type& val = value_type())构造并初始化n个valvector (const vector& x)(重点)拷贝构造vector (InputIterator first, InputIterator

2025-10-31 23:35:42 665

原创 【C++进阶篇】AVL树的实现(赋源码)

AVL树(Adelson-Velsky and Landis Tree)是计算机科学中最早发明的自平衡二叉搜索树(BST),由苏联数学家G. M. Adelson-Velsky和E. M. Landis于1962年提出。平衡性:任意节点的左右子树高度差绝对值不超过1(即平衡因子为-1、0或1)。自平衡机制:通过树旋转(左旋、右旋、左右双旋、右左双旋)动态调整结构,确保插入、删除操作后树的高度保持对数级别(O(log n))。

2025-10-31 23:35:33 795

原创 【C++】智能指针详解

不过注意的是 TR1 并不是标准版。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。指程序使用系统分配的资源,比方套接字、文件描述符、管道等没有使用对应的函数释放 掉,导致系统资源的浪费,严重可导致系统效能减少,系统执行不稳定。内存泄漏的危害:长期运行的程序出现内存泄漏,影响很大,如操作系统、后台服务等等,出现内存泄漏会导致响应越来越慢,最终卡死。1. 工程前期良好的设计规范,养成良好的编码规范,申请的内存空间记着匹配的去释放。

2025-10-31 23:35:22 1010

原创 【C++】C++的类型转换

RTTI : Run-time Type identification 的简称,即:运行时类型识别。否还有其他不同的方法达到同一目的,如果非强制类型转换不可,则应限制强制转换值的作用。1. 隐式类型转化有些情况下可能会出问题:比如数据精度丢失。,每次使用强制类型转换前,程序员应该仔细考虑是。因此 C++ 提出了自己的类型转化风格,注意。代码语言:javascript。代码语言:javascript。代码语言:javascript。代码语言:javascript。代码语言:javascript。

2025-10-31 23:35:11 622

原创 【C++】map和set的使用

set的声明如下,T就是set底层关键字的类型。set默认要求T支持小于比较,如果不支持,可以手动实现一个仿函数传给第二个模板参数。set底层存储数据的内存是从空间配置器上申请的,如果需要可以自己手动实现一个内存池,传给第三个参数。一般情况下我们都不需要传后面的两个模板参数。set的底层是用红黑树实现的,增删查的效率是O(logn),迭代器遍历走的是搜索树的中序遍历,所以遍历后的元素是有序的。代码语言:javascript代码运行次数:0运行AI代码解释map。

2025-10-31 23:34:59 729

原创 【C++入门篇】学习C++就看这篇--->引用超详解

本篇博客我们总结学习了以下知识点:C++引用是为变量创建别名,共享内存空间,须初始化且不可更改引用对象。关键特性:必须初始化、支持多别名、类型一致,const引用可绑定常量或隐式转换类型(权限不能放大)。应用场景:作函数参数(避免拷贝,提升效率)和返回值(需确保对象生命周期,避免悬空引用)。与指针区别:引用无独立内存、更安全(无空引用、不可重定向)、语法简洁(自动解引用)。效率上,引用传参/返回优于值传递,减少拷贝开销。注意函数返回局部变量时,引用会导致未定义行为,而指针仍需手动管理内存。

2025-10-31 23:34:47 725

原创 C++容器完全指南:掌握set和map的使用

include // 包含pair的头文件 // 创建pair的几种方式 std::pair<int, double> p1;// 默认构造,两个元素被值初始化 std::pair<int, double> p2(1, 3.14);// 直接初始化 std::pair<int, double> p3 = {2, 2.718};// 列表初始化(C++11起) auto p4 = std::make_pair(3, 1.618);// 使用make_pair辅助函数。

2025-10-31 23:34:27 730

原创 【C++入门篇】学习C++就看这篇--->命名空间、缺省参数及函数重载

编辑代码功能可以实现不同语言之间的转换,如Python语法转换成C++语法等。Fitten Code 能够根据您的代码自动生成相关注释,通过分析您的代码逻辑和结构,为您的代码提供清晰易懂的解释和文档,不仅提高代码的可读性,还方便其他开发人员理解和使用您的代码。Fitten Code可根据用户指示对选定的代码块进行编辑,用户点击 "Apply" 后即可应用变更。Fitten Code 拥有自动生成单元测试的功能,可以根据代码自动产生相应的测试用例,提高代码质量和可靠性。可能的 bug,并给出修复建议。

2025-10-31 23:33:31 839

原创 【C++指南】vector(二):手把手教你底层原理与模拟实现

本文通过自主实现的xc::vector类,展示了动态数组容器的核心实现技术。需要特别注意的是,虽然当前实现通过记录相对位置等手段初步解决了迭代器失效问题,但不同操作(如reserveinserterase)引发的迭代器失效机制与应对策略仍需深入探讨。建议读者持续关注后续文章《,我们将结合具体代码与测试用例,系统分析迭代器失效的根本原因及解决方案。

2025-10-31 23:33:21 999

原创 【C++经典例题】字符串转整数(atoi)的实现与解析

在编程中,经常会遇到将字符串转换为整数的需求,就像标准库中的atoi函数一样。本题要求实现一个myAtoi−2^31−2^312^31 − 12^31 − 1。

2025-10-31 23:33:07 551

原创 C++23:修正常量迭代器、哨兵和范围

C++23对常量迭代器、哨兵和范围的修正,特别是和其他类似实用程序的改进,以及视图适配器的引入,解决了C++20范围库在常量正确性方面存在的一些问题。这些改进使得开发者在编写代码时能够更加方便地处理常量范围,确保数据的只读访问,提高了代码的安全性和可维护性。同时,对于浅const视图(如std::span),常量迭代器的保证也让我们在使用这些视图时更加放心。随着编译器对C++23标准的逐步支持,这些新特性将为C++程序员提供更多的便利和灵活性。

2025-10-31 23:32:54 644

原创 【C++】类与对象【下】

代码语言:javascript代码运行次数:0运行AI代码解释。

2025-10-31 23:32:34 808

原创 C++23 新增扁平化关联容器详解

是一个类似于std::set的容器,但它使用扁平化存储的唯一键集合。它的底层实现使用排序的连续存储(通常是或类似结构),而不是树结构。查找速度快:查找操作使用二分查找,时间复杂度为 $O(log n)$。由于内存连续,缓存命中率高,总体查找速度比std::set快。插入和删除较慢:插入和删除操作通常需要对数组中的元素进行整体移动,尤其在不支持移动构造时,时间复杂度为 $O(n)$。迭代速度快:由于内存局部性,迭代速度比std::set快。内存占用小。

2025-10-30 23:44:45 315

原创 【C++进阶篇】走进C++的异常世界:从抛出到捕获的全方位解读

本文系统讲解了C++异常处理机制,涵盖异常概念、抛出捕获、栈展开、异常重新抛出、异常安全及标准异常体系等内容。通过代码示例演示了自定义异常、类型转换异常、资源管理等核心场景,强调RAII模式在异常安全中的关键作用,并对比了C++不同版本异常规范的演变。掌握这些机制可编写更健壮的C++程序,有效处理运行时错误,避免资源泄漏。

2025-10-30 23:43:32 338

原创 C++23 元编程工具新特性探索

C++23 元编程工具中的这些新特性为开发者提供了更多的编程便利和安全性。添加比较概念对仅移动类型的支持使得范围适配器能够更好地与现代 C++ 的资源管理模式结合,提高了代码的灵活性和简洁性。而几个类型特征,如和,则在编译时提供了更多的类型检查和判断能力,帮助开发者编写更安全、更健壮的代码。随着 C++ 标准的不断发展,我们可以期待更多实用的特性和工具的出现,进一步提升 C++ 编程的效率和质量。

2025-10-30 23:42:52 375

原创 【C++】 解决 C++ 语言报错:数组初始化

当程序在声明和初始化数组时,未能正确指定数组的大小或未能正确地初始化数组元素,可能会导致编译错误、运行时错误或程序行为不可预测。指定数组大小、匹配初始化列表和数组大小、使用标准库容器和显式初始化数组等措施,可以显著提高程序的健壮性和可靠性。当声明数组时指定了数组的大小,但初始化列表的元素数量与数组大小不匹配,可能会导致编译警告或运行时错误。当声明数组时未指定数组的大小,且未提供足够的初始化值时,会导致编译错误。当声明数组时未对数组进行初始化,可能会导致数组中的元素包含未定义的值。

2025-10-30 23:41:23 263

原创 游戏服务的可观测性能力建设(C++生态)

这篇写得篇幅比较大,基本上是个大一统的分享。后续有空我也会再再几个子项分享展开。

2025-10-30 23:39:35 333

原创 C++内存管理:深入理解与高效实践

C++内存管理既是一门艺术,也是一门科学。它要求程序员不仅要理解底层的内存操作机制,还要具备高超的抽象思维和设计能力。通过本文的学习,你应该能够掌握C++内存管理的核心概念和最佳实践,从而编写出更加高效、稳定、安全的C++代码。

2025-10-30 23:38:36 314

原创 C++模板初阶探索:解锁泛型编程的钥匙

函数模板的定义以template关键字开始,后跟一个模板参数列表(用尖括号<>包围),再后面是函数的返回类型、函数名和参数列表。模板参数列表通常包含一个或多个类型参数,这些参数在函数体内被用作类型占位符。以下是一个简单的函数模板示例,它计算两个值的最大值:代码语言:javascript代码运行次数:0运行AI代码解释a : b;在这个例子中,T是一个类型参数,它可以是任何可以比较大小的类型(如intfloatdouble等)。当你调用max。

2025-10-30 23:37:41 244

原创 解锁C++编程利器:深度剖析vector容器的奥秘

是C++标准模板库(STL)中的一个非常重要和常用的容器。它提供了一种动态数组的功能,即可以在运行时根据需要自动调整其大小以存储元素。与普通的C数组相比,提供了更多的灵活性和安全性。通过对std::vector的深入探索,我们不仅了解了它的基本用法和高级特性,还学会了如何在实际开发中充分利用其优势,同时避免潜在的陷阱。std::vector以其灵活高效的内存管理、快速的随机访问能力和丰富的成员函数,成为了C++编程中不可或缺的容器之一。

2025-10-30 23:36:51 371

原创 C++23 已弃用特性

是 C++11 引入的一个模板结构,定义在头文件中,用于创建具有特定大小和对齐要求的未初始化存储空间。它主要用于需要手动管理内存对齐的场景,确保在使用某些类型时不会出现对齐问题。其语法如下:代码语言:cpp代码运行次数:0运行AI代码解释其中,Len表示所要分配的存储空间的大小(以字节为单位),Align表示存储空间的对齐要求(以字节为单位),默认值为,即该值将会满足所有数据类型的对齐要求,该值由编译器和系统共同决定。例如,在 x86 - 64 平台上,最大对齐值通常是 16 个字节,因为。

2025-10-30 23:35:39 904

原创 C++游戏开发

C++ 在游戏开发中提供了强大的性能和灵活性,能够处理从图形渲染到网络通信的各个方面。Unreal Engine 是一个强大的游戏引擎,使用 C++ 编写,提供了丰富的功能,如高质量的图形渲染、物理模拟和网络支持。C++ 拥有丰富的第三方库和游戏引擎,如 Unreal Engine、CryEngine 和 SDL,这些库和框架加速了开发过程,并提供了强大的功能支持。游戏中的音效和背景音乐是增强游戏体验的重要组成部分。游戏循环是游戏的核心,控制着更新、渲染和事件处理的顺序。性能优化是游戏开发中的重要环节。

2025-10-30 23:34:57 779

原创 【机器学习】探秘图像处理与分类:运用C++结合OpenCV实现智能视觉识别技术

随着技术的不断进步,OpenCV将继续提供更多的工具和算法,推动计算机视觉领域的发展。安装完成OpenCV后,我们可以在Python环境中导入cv2模块来使用OpenCV的功能。以下我们将分别介绍在Windows、Linux和Mac OS下的安装方式,以及如何配置Python环境使用OpenCV。总的来说,无论是在Windows、Linux还是Mac OS系统下,安装和使用OpenCV都是相对简单的。如果输出了你所安装的OpenCV版本号,那么恭喜你,你已经成功安装并配置好了OpenCV!

2025-10-30 23:34:32 833

原创 【C++干货基地】C++继承攻略:实现多态基础与代码复用的利器

面向对象的三大特性我相信大家都听说过 封装 继承 多态 封装我相信大家都不陌生前面我们对于迭代器,以及反向迭代器都是对代码的一种封装那继承是什么呢?继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。比如说以下这个设计就需要我们用到继承的理念这里就是继承的概念这个这个类中不管是 学生还是保安 教室 都是人的一种当我们设计这样的类时,就需要用到继承的概念。派生类 继承方式 基类。

2025-10-30 23:34:08 822

原创 【C++指南】“单身狗问题”——只出现一次的数字 系列问题

只出现一次的数字”系列题目围绕着在不同数字出现次数规则下找出特殊数字展开,主要通过位运算来解决。

2025-10-30 23:33:39 779

原创 【C++指南】STL list容器完全解读(一):从入门到掌握基础操作

在C++标准模板库(STL)中,list是一个基于双向链表实现的序列。它允许在任意位置进行高效插入和删除操作,时间复杂度为O(1)。与vector不同,list不保证元素在内存中的连续存储,因此不支持随机访问。在这里插入图片描述本文详细介绍了C++ list容器的基本特性和使用方法。通过大量的代码示例,我们学习了如何正确使用list进行元素的增删改查操作。list作为STL中重要的序列式容器,其独特的链表结构使其在特定场景下具有不可替代的优势。list的高级应用技巧。

2025-10-30 23:33:03 821

原创 【C++基础篇】学习C++就看这篇--->类和对象入门

代码语言:javascript代码运行次数:0运行AI代码解释// 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略事实上就是结构体换个名字而已,其中的细节变更一下。类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者 成员函数。1️⃣声明和定义全部放在类体中注意成员函数如果在类中定义,编译器默认(可能)会将其当成内联函数处理。当然这只是给编译器一建议。

2025-10-30 23:32:27 271

原创 C++23 已移除特性解析

在早期的 C++ 版本中,为了减轻开发者手动管理内存的负担,引入了垃圾收集的支持和基于可达性的泄漏检测功能。垃圾收集的基本原理是通过跟踪对象的引用关系,自动回收不再被引用的对象所占用的内存。基于可达性的泄漏检测则是通过分析对象之间的引用关系,找出那些无法被访问到但仍然占用内存的对象,从而检测出内存泄漏。例如,在一个复杂的程序中,可能会创建大量的对象,并且这些对象之间存在着复杂的引用关系。开发者在编写代码时,很难保证所有的对象都能被正确地释放。

2025-10-29 23:40:43 509

原创 【C++干货基地】C++继承攻略:实现多态基础与代码复用的利器

面向对象的三大特性我相信大家都听说过 封装 继承 多态 封装我相信大家都不陌生前面我们对于迭代器,以及反向迭代器都是对代码的一种封装那继承是什么呢?继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。比如说以下这个设计就需要我们用到继承的理念这里就是继承的概念这个这个类中不管是 学生还是保安 教室 都是人的一种当我们设计这样的类时,就需要用到继承的概念。派生类 继承方式 基类。

2025-10-29 23:40:30 638

原创 【C++指南】位运算知识详解

C++ 提供了六种位运算符,分别是按位与()、按位或()、按位异或()、按位取反()、左移(<<)和右移(>>下面将分别介绍这些运算符的使用和规则。位运算是 C++ 中一种强大而高效的运算方式,通过对二进制位的直接操作,可以解决许多复杂的问题。在实际编程中,合理运用位运算符可以提高程序的性能和效率。需要注意的是,位运算的结果通常依赖于具体的编译器和机器,特别是在处理有符号数的右移操作时,要考虑符号位的影响。

2025-10-29 23:40:19 995

原创 【C++进阶篇】走进C++的异常世界:从抛出到捕获的全方位解读

本文系统讲解了C++异常处理机制,涵盖异常概念、抛出捕获、栈展开、异常重新抛出、异常安全及标准异常体系等内容。通过代码示例演示了自定义异常、类型转换异常、资源管理等核心场景,强调RAII模式在异常安全中的关键作用,并对比了C++不同版本异常规范的演变。掌握这些机制可编写更健壮的C++程序,有效处理运行时错误,避免资源泄漏。

2025-10-29 23:40:07 545

原创 C++23:关键特性与最新进展深度解析

C++23作为C++标准的最新版本,带来了许多令人瞩目的改进和新特性。从新的范围和元组功能到对字符和字符串转义表示的优化,再到std::thread::id的改进以及栈踪迹的格式化,C++23不仅提升了语言的表达力和灵活性,还为性能优化和调试支持提供了强大的工具。本文将深入探讨C++23中这些关键特性及其相关的最新标准提案进展。范围的新功能与增强C++23在范围(Ranges)方面进行了显著改进,进一步完善了C++20引入的范围库。通过引入新的范围适配器和操作,C++23让范围的使用更加灵活和强大。

2025-10-29 23:38:21 512

原创 C++模板初阶探索:解锁泛型编程的钥匙

函数模板的定义以template关键字开始,后跟一个模板参数列表(用尖括号<>包围),再后面是函数的返回类型、函数名和参数列表。模板参数列表通常包含一个或多个类型参数,这些参数在函数体内被用作类型占位符。以下是一个简单的函数模板示例,它计算两个值的最大值:代码语言:javascript代码运行次数:0运行AI代码解释a : b;在这个例子中,T是一个类型参数,它可以是任何可以比较大小的类型(如intfloatdouble等)。当你调用max。

2025-10-29 23:37:50 532

原创 C++23关联容器的异质擦除重载 (P2077R2)介绍

内置类型没有构造函数,编译器自动管理其生命周期。自定义类型通过构造函数初始化对象,可以提供无参、带参构造函数、重载构造函数、以及拷贝构造函数。拷贝构造函数是用来通过已有对象来初始化新对象的特殊构造函数。它的主要作用是复制一个对象的所有成员,从而创建一个新的与原对象相同的对象。​在C++中,拷贝构造函数的定义通常如下:代码语言:javascript代码运行次数:0运行AI代码解释class A {public:// 拷贝构造函数参数:它接受一个自身类型对象的引用作为参数,通常是。

2025-10-29 23:36:31 956

原创 C++和C#界面开发方式的全面对比

在选择C++或C#的界面开发方式时,开发者需要根据项目的具体需求、目标平台、开发资源和团队技术栈来做出决策。C++MFC:适合传统的Windows桌面应用开发。Qt:适合跨平台桌面应用开发,尤其是复杂业务应用。WTL:适合小型工具和简单桌面应用。wxWidgets:适合跨平台桌面应用开发,尤其是需要灵活界面设计的场景。DirectUI:适合高性能图形应用和游戏开发。C#WPF:适合复杂的Windows桌面应用开发,尤其是需要现代化UI设计的场景。WinForms。

2025-10-29 23:36:14 647

原创 PV操作的C++代码示例讲解

通过以上示例可以看出,PV操作是一种强大的并发编程工具,可以有效地解决进程同步和互斥问题。在C++中,可以使用信号量、互斥量和条件变量等机制来实现PV操作。在实际应用中,需要根据具体的问题选择合适的解决方案,并注意P、V操作的顺序和次数,避免出现死锁等问题。同时,由于PV操作的并发性,程序的调试比较困难,需要仔细分析和排查问题。

2025-10-29 23:36:00 555

原创 深入浅出 C++ STL:解锁高效编程的秘密武器

理解 STL 被视为 C++ 高级编程的标志,经验丰富的开发者常说:“不懂 STL,不要说你会 C++”。STL 的发展经历了多个版本的迭代,每个版本都有其独特的特性和应用场景。迭代器用于遍历容器,STL 迭代器类型主要包括输入、输出、前向、双向和随机访问迭代器。:动态数组,支持随机访问,尾部插入/删除效率高,适合需要大量随机访问的场景。:用于顺序存储数据,适合频繁的插入、删除、排序操作。:双向链表,插入和删除操作高效,适合频繁修改的场景。:双端队列,支持头部和尾部的插入和删除。

2025-10-29 23:35:44 813

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除