- 博客(19)
- 收藏
- 关注
原创 C++ STL库map,unordered_map,multimap,unordered_multimap详解
本文摘要:文章系统介绍了C++ STL中的关联容器,重点分析map、unordered_map及其变体multimap的特性与使用。map基于红黑树实现,保持元素有序性,提供O(logn)操作复杂度;unordered_map基于哈希表,提供平均O(1)访问但无序存储。详细对比了两者在构造、访问、查找、删除等方面的差异,并介绍了multimap允许重复键的特性。
2025-12-18 00:13:17
228
原创 动静态库制作与使用
静态库:编译嵌入,独立运行,体积大,更新需重编;动态库:运行加载,共享代码,体积小,更新灵活;制作核心:静态库用ar打包,动态库需-fPIC-shared;-L指定路径,-l指定库名,动态库需解决加载路径。
2025-12-17 18:15:17
257
原创 C++ 继承 多态 组合 从运用到底层原理详解!草履虫也能轻松看懂
本文详细讲解了C++面向对象编程中的继承、多态和组合三大核心概念。继承部分介绍了基本语法、访问权限、构造析构顺序等;多态部分阐述了虚函数机制、纯虚函数、对象切片等;组合部分则分析了强组合和弱组合的实现方式。文章还对比了组合与继承的优缺点,强调"优先使用组合"的设计原则。
2025-12-17 03:24:43
1352
原创 Linux - 软硬链接
Linux系统提供两种文件链接机制:硬链接和软链接。硬链接通过共享inode实现文件多路径访问,删除原始文件不影响链接访问,但不支持跨文件系统和目录链接。软链接是存储目标路径的独立文件,支持跨系统和目录链接,但原始文件删除会导致链接失效。硬链接适合文件备份和多路径访问,软链接更适合路径简化和跨设备访问。理解二者差异(inode共享vs路径指向)能帮助用户根据实际需求选择合适方式。
2025-12-16 03:05:58
720
原创 Linux_文件超详细合集: 软件->硬件
本期Blog介绍了基于Linux的文件系统几乎全部的知识点:从文件在软件层的创建,销毁,重命名,输入输出等操作到文件在系统底层的相关操作,再到文件在物理层面的存储方式.我会用尽量简单的方式向你讲解,同时也是向我自己讲解.如果中途你遇到了一些看不懂的,不妨往下看看,也许解释会在后面,因为这些知识点之间关系复杂,很难用线性方式讲解.
2025-12-16 01:17:26
1089
5
原创 C++ STL库set 和 multiset详解
是 C++ STL 中的关联容器,用于存储的元素。:自动过滤重复元素:元素按指定顺序自动排列:基于平衡二叉搜索树(通常是红黑树)实现 O(log n) 的查找:支持查找特定范围内的元素:支持交集、并集、差集等数学集合操作。
2025-12-13 19:34:15
717
原创 C/C++内存管理合集!
C++内存布局与分配机制解析 内存布局分为多个区域:代码段(只读)、数据段(已初始化全局变量)、BSS段(未初始化数据)、堆(动态分配)、栈(局部变量)、共享区和内核空间。堆从低地址向高地址扩展,需手动管理;栈从高地址向低地址收缩,自动管理且大小有限。 内存计算涉及数据类型大小和内存对齐规则。基本类型大小随系统位数变化,指针在64位系统为8字节。结构体/类的大小需考虑成员对齐和填充,总大小需为最大对齐值的整数倍。 内存分配机制包括:new/delete运算符(自动调用构造/析构)、operator new/
2025-12-11 16:40:32
748
原创 C++声明_定义_实例化_前向声明?一次搞懂!
本文系统阐述了C++中四个核心概念:声明(Declaration)是告知编译器标识符存在及其类型,不分配内存或提供实现;定义(Definition)则进一步分配内存或提供具体实现;实例化(Instantiation)特指根据模板生成具体类型或创建类对象的过程;前向声明(Forward Declaration)用于提前声明标识符以解决循环依赖。文章详细对比了声明与定义的关键区别,分析了模板实例化的隐式/显式方式,并重点说明前向声明在降低编译依赖方面的优势。同时延伸探讨了一次定义规则、翻译单元、存储类说明符等相
2025-12-08 18:20:42
608
原创 虚幻引擎-检测射线TraceChannel与形状检测射线
我们现在有一个需求:我们需要先算出来起点和终点,然后用一个函数发射一个射线问题1:由于射线太细,可能导致错过目标物体解决方案:不再使用线性追踪,而是用一个球体射线(扫掠),更加容易命中物体问题2:路径上会有别的物体挡路解决方案:设定自定义的追踪通道,在需要的物体的碰撞预设中添加对我们这个射线的阻碍这样只有我们想要的物体才会被射线检测到.
2025-11-29 06:37:34
675
原创 虚幻引擎-设计场景物体哲学-C++
本文介绍了在C++中设计游戏道具的实现方法,重点演示了可拾取物品和门锁系统的创建流程。首先通过继承Actor类创建CollectableItem基类,设置物品标签;然后详细说明了Lock类的构建过程,包括组件声明、构造函数初始化、碰撞设置和可见性控制。通过触发器组件实现门锁互动功能,当钥匙放置时显示模型并触发开门效果,未激活时隐藏钥匙。这种设计模式可用于创建各种交互式游戏道具,实现复杂的游戏机制。
2025-11-29 04:51:53
542
原创 Linux进程
命名含义l= list(列表参数),e= environment(自定义环境变量)。函数原型参数解释patharg:与execl()一致(路径 + 列表参数,最后NULL结尾)。envp:自定义的环境变量数组(每个元素格式为,最后以NULL结尾),会覆盖当前进程继承的环境变量。示例(执行自定义程序./myprog,并传自定义环境变量):// 自定义环境变量// 最后一个参数是envp数组特点:可自定义新程序的环境变量,适合需要隔离环境的场景(普通exec函数会继承父进程的环境变量)。
2025-11-28 03:55:49
621
原创 虚幻引擎如何实现按键绑定按键反馈C++
本文介绍了在虚幻引擎中实现输入映射的基本流程。主要内容包括:1)输入动作(IA)和输入映射上下文(IMC)的概念,建议将功能相近的动作放在同一IMC中;2)通过SetupPlayerInputComponent函数绑定动作与响应函数;3)以"点击鼠标左键打印Hello World"为例,详细说明了实现步骤:创建输入动作、注册到IMC并绑定按键、在玩家控制类中声明动作和响应函数、绑定动作与函数、最后在蓝图中传入自定义动作。整个过程展示了虚幻引擎输入系统从定义到实现的全流程。
2025-11-28 02:19:47
257
1
原创 Linux 环境变量:定义、核心作用与实操指南
Linux环境变量是动态键值对,用于存储系统配置和路径信息。主要特性包括动态修改、继承性(子进程继承父进程变量)和作用域(局部/全局)。程序员常用变量如PATH(可执行程序路径)、HOME(用户目录)和LD_LIBRARY_PATH(动态库路径)。 设置方式:临时用export命令,永久修改需写入配置文件(如~/.bashrc)。C/C++通过getenv()和setenv()操作变量,但修改仅影响当前进程。Bash作为父进程初始化并传递环境变量给子进程(如C程序),同时提供命令行接口管理变量。 注意事项:
2025-11-27 02:45:20
844
原创 C/C++指针全种类详细解释
本文系统介绍了C语言指针的分类和应用。指针按数据类型可分为基本类型指针、结构体指针、函数指针等;按层级分为单级和多级指针;按用途分为数组指针、指针数组、常量指针等。重点解析了指针的"右左法则"语法规律、void指针特性以及指针运算规则,并提供了动态内存分配、字符串处理等实际应用示例。文中还总结了指针声明口诀和记忆技巧,最后通过解析复杂指针声明演示了右左法则的应用。掌握这些分类和规律能帮助开发者更好地理解和使用指针。
2025-11-26 23:51:29
369
原创 C/C++结构体内存的问题
结构体内存布局遵循成员声明顺序,并考虑对齐要求。成员地址必须满足其大小的整数倍,结构体总大小需为最大成员大小的整数倍(如S1占12字节,S2占8字节)。嵌套结构体需额外考虑内部对齐(如Outer占24字节)。可通过offsetof宏获取成员偏移量,利用成员指针反推结构体地址。结构体内部字节序由硬件决定(x86为小端,网络为大端),不影响整体布局顺序。合理排列成员可优化内存空间(如S2比S1更紧凑)。
2025-11-26 01:20:24
309
原创 详解虚幻引擎的字符串类型
FName是虚幻引擎中的高效字符串标识类型,基于全局字符串池实现轻量化和哈希优化。其核心特性包括:不可变性、大小写不敏感(默认)、O(1)时间复杂度的快速比较。FName主要用于对象标识、标签系统、资源路径等场景,相比FString和FText更注重性能而非文本操作。使用时需注意字符串转换方式(推荐使用TEXT()宏)和大小写敏感设置。TEXT()宏是虚幻引擎处理字符编码兼容性的关键工具,它能自动将字符串适配为TCHAR类型,确保在多语言和跨平台环境下的正确性。
2025-11-25 03:38:12
629
原创 虚幻引擎的标签系统
摘要:本文介绍了在虚幻引擎中如何使用Actor标签控制压力板触发机制。首先为角色蓝图添加"PressurePlateActivator"标签,然后通过ActorHasTag()函数检测该标签。通过绑定OnOverlapBegin和OnOverlapEnd事件,当带有该标签的Actor与触发器重叠时,设置Mover组件的ShouldMove变量控制门的开关。要实现其他物体(如椅子)触发功能,只需为其添加相同标签并开启重叠事件即可。这种方法提供了一种灵活的对象交互管理方式。
2025-11-25 00:06:50
727
原创 草履虫也能看懂的虚幻引擎的委托机制
摘要:委托是一种允许对象注册回调函数的机制,当特定事件发生时自动触发这些函数。虚幻引擎中的委托分为单播(绑定单个函数)、多播(绑定多个函数)和动态委托(支持蓝图)。委托的优势包括解耦对象、运行时灵活性、多播通知、类型安全及与引擎深度集成。通过示例展示了如何声明、绑定和触发委托,对比了直接调用与委托方式的差异,后者显著降低了代码耦合度。委托机制类似于公告板,让事件源无需关心具体接收者,只需广播事件即可实现自动通知。
2025-11-24 21:36:28
731
原创 虚幻引擎的BoxComponent组件实现触发器/碰撞箱
虚幻引擎中BoxComponent是一种长方体碰撞组件,可用于检测物体重叠事件。通过设置触发器模式(不阻挡物体但检测重叠),它能响应OnComponentBeginOverlap和OnComponentEndOverlap事件。本文详细介绍了如何创建自定义TriggerComponent类,包括委托绑定、成员变量设置和事件处理函数实现。以压力板控制门的实例展示了具体应用:通过绑定Mover组件,在重叠事件中控制门的开关状态。代码示例包含TriggerComponent和Mover组件的完整实现,展示了碰撞检
2025-11-24 21:33:44
586
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅