C++
文章平均质量分 71
桃溪小小生
别人说如何,我们说为何。
展开
-
记录下以前做的仙剑小游戏(连连看,RPG)
小游戏原创 2023-01-07 11:01:14 · 224 阅读 · 0 评论 -
Unreal&UBlueprintAsyncActionBase的使用
UBlueprintAsyncActionBase & FLatentAction原创 2022-12-17 18:48:43 · 1168 阅读 · 0 评论 -
使用Traits技法来对模板参数进行类型过滤
使用Traits技法来对模板参数进行类型过滤原创 2022-12-06 21:56:49 · 334 阅读 · 3 评论 -
FAlphaBlend——Unreal中的插值助手
Unreal&FAlphaBlend是干嘛用的?原创 2022-11-26 22:24:49 · 754 阅读 · 0 评论 -
Unreal&LatentAction的能与不能
Unreal&LatentAction的能与不能原创 2022-11-14 21:14:07 · 341 阅读 · 0 评论 -
Unreal富文本RichText的逐字打印问题
Unreal富文本RichText的逐字打印问题原创 2022-10-22 21:40:24 · 1171 阅读 · 0 评论 -
说说C++的默认构造函数
说说C++的默认构造函数原创 2022-08-28 00:22:58 · 1236 阅读 · 0 评论 -
从Unreal的Cast函数探寻反射系统父子关系的建立过程
Unreal Cast是如何工作的?原创 2022-08-06 23:35:13 · 644 阅读 · 0 评论 -
C++中的CopyElision
C++ copy elision的前世今生原创 2022-07-30 15:18:06 · 571 阅读 · 0 评论 -
图解lower_bound&upper_bound
图解lower_bound&upper_bound原创 2022-07-24 11:10:47 · 278 阅读 · 0 评论 -
Unreal中通过FMonitoredProcess启动其他独立程序
Unreal中通过FMonitoredProcess启动其他独立程序原创 2022-07-06 18:11:12 · 334 阅读 · 0 评论 -
Traits技法的典型应用:Unreal TStructOpsTypeTraits原理浅析
Unreal的traits应用原创 2022-05-10 12:46:55 · 876 阅读 · 0 评论 -
C++11的alignof和alignas
C++11的alignof和alignas原创 2022-04-10 16:57:55 · 2365 阅读 · 0 评论 -
Visual Studio的相关小技巧
快捷键Ctrl + , 在菜单栏EDIT->Navigate To...弹出一个小窗口后,输入要查找的字符串,VS会自动匹配出工程中的代码,包括文件名,如果不需要文件名,在查找字符串前面加符号@即可。原创 2017-04-27 18:32:40 · 20742 阅读 · 1 评论 -
UE4智能指针源码浅析
UE4智能指针源码浅析原创 2022-03-20 12:12:08 · 587 阅读 · 0 评论 -
UE4智能指针的相关使用事项
UE4智能指针使用事项原创 2022-03-18 21:52:39 · 1156 阅读 · 0 评论 -
UE4智能指针TSharedRef的几种初始化方式
UE4智能指针TSharedRef的初始化原创 2022-03-18 18:04:51 · 2772 阅读 · 0 评论 -
UE4智能指针TSharedPtr的几种初始化方式
UE4智能指针TSharedPtr的初始化原创 2022-03-18 16:59:25 · 5865 阅读 · 0 评论 -
UE4 generated.h文件生成过程模拟
UE4 generated.h生成过程手动模拟原创 2022-02-26 00:33:12 · 1798 阅读 · 0 评论 -
LeetCode:无重复字符的最长子串,滑动窗口的原理浅析
无重复字符的最长子串,滑动窗口的原理浅析原创 2022-02-14 15:25:42 · 7932 阅读 · 0 评论 -
LeetCode:环形链表入口
环形链表入口在哪?原创 2022-02-10 19:19:32 · 952 阅读 · 0 评论 -
LeetCode:链表逆序-递归法的层层分析
层层分析链表逆序递归法原创 2022-02-10 16:14:11 · 553 阅读 · 1 评论 -
LeetCode:矩阵的对角线遍历-路径法
LeetCode链接:对角线遍历路径法,这是我个人的称呼。有两种方向,往右上为正方向,往左下为反方向。从(0,0)开始,循着实际路径,每当走到边界时,方向翻转,并定位下次开始走路的索引。示意图如下往右上为正方向,前进时,每次前进一步,rowIndex--,colIndex++。共有三种边界情况,即图中圆圈中的1 2 3。第1种情况:方向取反,行索引重置为0,列索引+1,即从1走到2。第2种情况:方向取反,行索引重置为1,列索引重置到边界,即从5走到10。第3种情况:方向取反,行索引原创 2022-02-08 20:57:43 · 602 阅读 · 0 评论 -
LeetCode:数组的最大子序和
从0推理最大子序列原创 2022-02-07 15:42:30 · 7429 阅读 · 2 评论 -
STL中的__is_trivial定义在哪里?
在查看stl源代码的时候,会发现std::is_trivial也是利用了__is_trivial,但是在STL查找,却没追踪到__is_trivial的定义,何解?百度了半天,也没发现谁准确地讨论了__is_trivial,全部都在围绕is_trivial讨论,很默契地避开了__is_trivial。几经周折,我在一个网站发现了端倪,https://manishearth.github.io/blog/2017/01/11/rust-tidbits-what-is-a-lang-item/其中有这样一句原创 2021-08-27 00:11:25 · 399 阅读 · 0 评论 -
C++中的Traits编程技巧有什么用?
如果你问C++中traist是干嘛的,很多网友会给你扛出“吓人的解释”:特性萃取技术!提取“被传进的对象”对应的返回类型!……嗯,听起来很高大上很牛逼,but,我还是不明白这玩意有啥用?相比枯燥的解释,让我们先看一个实际的需求。用过STL容器的同学都知道,STL自己有一套内存管理,我们直接使用容器就行了,一般情况下,不用关心容器内部的内存处理。但总存在一些情况,我们必须自己手动管理一些对象的内存,比如一个比较大的项目中,有大量对象的频繁申请释放,需要设计一个内存池,让不同的对象都能使用这套内存池。在原创 2021-08-25 14:25:52 · 422 阅读 · 0 评论 -
stl中的conditional_t是干嘛的?
stl源码中,有个很基础的类型conditional_t,conditional_t有什么用?在回答这个问题之前,先看几个简单的例子。现在有如下需求,有两个类A、B,如下:struct A{ int a= 10;};struct B{ float b = 200.0f;};问题1:现在新加一个类O,我希望它有时候继承A,有时候继承B,该怎么办?我们知道,一般继承情况下,O要么继承A,要么继承B,要么多继承A、B,怎么会既可能继承A,又可能继承B呢?从描述中,我们得出一个信息:原创 2021-08-24 18:28:55 · 2694 阅读 · 2 评论 -
C++中typename和template的其他用处
C++中,typename和template的最基础用法是在模板声明中,这个太常见了,所以不再赘述,我们要讨论的是typename和template的另一用处,本文的参考地址:Where and why do I have to put the “template” and “typename” keywords?typename在C++中,有些情况下,编译器需要显示地知道如何对待一个表达式,而这些情况有一点是共同的:他们都至少涉及到了一个模板参数。如果一个表达式在解析的时候,可能会有歧义,那么我们原创 2021-08-23 18:28:50 · 674 阅读 · 0 评论 -
说说vector的emplace_back和push_back
稍微了解过C++11的同学都知道,stl提供的标准容器新添加了一些列的操作函数,我们今天就简单聊聊vector新添加的emplace系列函数。vector添加的emplace系统函数有2个,emplace、emplace_back,其功能分别对应insert和push_back。我们以emplace_back为例,emplace的原理类似。网上有不少相关的介绍,最后结论都是说emplace_back是更好的方法,那么为什么emplace_back更好呢?要解释为什么emplace优于push_bac原创 2021-07-27 23:01:16 · 6722 阅读 · 5 评论 -
UE4的IsPendingKill完全安全吗
我们写UE4的C++代码时,习惯用IsPendingKill来判断一个Object是否还有效,尤其对于Actor最常见。使用Actor之前,判断一次nullptr和IsPendingKill,如果Actor合法,则继续之后的代码。一般情况下,这个做法不会出什么问题,但也有例外,可怕的是,进入这种例外情况以后,我们将无法通过一个Actor*判断它是否合法了,偶尔的崩溃即将出现……这个例外情况就是:如果一个Actor*没有被UPROPERTY修饰,当它被Destroy并且被GC销毁之后,此时Actor*将成原创 2021-07-26 00:02:18 · 1053 阅读 · 2 评论 -
UE4蓝图函数的参数传递问题
我们知道,在原生的C++编程中,函数在进行值传递的时候,其实是利用了外部的一个值变量,调用class的拷贝构造函数,创建了一个临时变量,如下一段代码struct A{ int i = 0; A() { cout << "A constructor" << endl; } A(const A& Other) { cout << "A copy constructor" << endl; } A& operator=原创 2021-07-24 16:29:26 · 2190 阅读 · 1 评论 -
关于C++11中的make_shared
我在读《C++Primer(第五版)》智能指针的章节时,看到书中有如下内容可见作者非常推荐使用make_shared来生成shared_ptr,那么我的疑问就来了,为什么make_shared是更好的方法?经过查阅相关资料和阅读源码,找出原因:make_shared只申请了一次内存,而普通的先new一个raw_ptr,再调用shared_ptr(raw_ptr)是进行了两次内存分配,所以一次分配要比两次分配效率高。为了下文叙述方便,我们称呼下图中使用make_shared的构造方法为1,先new原创 2021-06-28 20:58:14 · 2895 阅读 · 4 评论 -
UE4 EditorUtilityBlueprint之ActorActionUtility
上篇文章介绍了AssetActionUtility之后,我们再来看另一种常用的EditorUtilityBlueprint——ActorActionUtility。原创 2021-06-08 20:08:09 · 1458 阅读 · 0 评论 -
UE4 EditorUtilityBlueprint之AssetActionUtility
上一篇文章中简单介绍了EditorUtilityWidget的使用,UE4还为我们提供了另一个工具EditorUtilityBlueprint,乍一看,两者非常相似,实际上功能也的确很相似,原创 2021-06-08 19:57:34 · 2291 阅读 · 0 评论 -
简介UE4中的EditorUtilityWidget
我们使用UE4进行开发的时候,可能要开发一些编辑器以供策划或者美术使用,对于一些不是特别复杂的编辑器,UE4提供的EditorUtilityWidget是一个非常有用的工具,xiamian原创 2021-06-08 12:06:10 · 3155 阅读 · 0 评论 -
C++结构体字节对齐
结构体为什么要进行字节对齐?主要原因是加快变量在内存中的存取速度.我查了相关讨论对齐规则的资料,决定自己再整理一下.对齐主要有两方面,一个是结构体里面的变量字节对齐,一个是结构体本身在进行对齐.本文中基本数据类型占据大小分别为sizeof(char)=1.sizeof(short)=2,sizeof(int)=4,sizeof(float) =4,sizeof(double)=8一 基原创 2015-10-08 13:49:32 · 3443 阅读 · 0 评论 -
简析一段C++11中的lambda代码
先看如下代码int id = 0;auto f = [id]() mutable{cout << id << endl;++id;};id = 42;f();f();f();cout << id << endl;这段代码的输出是01242看起来比较奇怪,因为f()调用的时候,id已经被赋值为了42,为什么f里面的id还是42呢?lamda的原理就是仿函数,以上代码等同于class LamdaClass{原创 2021-02-25 14:58:06 · 176 阅读 · 0 评论 -
关于字符集与字符编码——一个ö字符引发的案件
最近自己用C++写了一个小工具,对一些文件进行批处理,绝大多数文件都没有问题,直到遇见了一个文件名带有Erik Grönwall - Higher的文件。这个文件名读取到内存中后,字符ö会被问号'?'替换,如下图所示我大致判断是字符集与字符编码的问题,但是具体问题出在了哪里,我不知道,针对这个奇怪恼人的案件,我决定进行一番彻底的调查。在此声明,以下结论全是我个人观点,请谨慎阅读。首先对字符集与字符编码的概念进行梳理,细节不在此进行赘述,参考这篇文章https://www.cnblogs.c.原创 2021-01-05 20:17:17 · 571 阅读 · 0 评论