📅  最后修改于: 2023-12-03 15:15:12.163000             🧑  作者: Mango
FString 是 Unreal Engine 4 中的一个字符串类,它具有比 C++ 中原生的 std::string 更强的功能和更好的性能。在 FString 中,fname 是一种特殊的字符串类型,也称为 fast name,它用于快速寻找字符串的索引,特别是在 Unreal Engine 4 中使用 Blueprint 的情况下。
fname 是在 FString 中定义的一种数据类型,它使用了 Name 表来存储字符串的索引,对于相同的字符串,只需要存储一次。在 Unreal Engine 4 中,fname 主要用于快速比较字符串和寻找字符串的索引,特别是在处理 Blueprint 时非常有用。
在 FString 中,fname 的定义如下:
typedef FName FName;
typedef TNameEntryArray FNameTableType;
class FString
{
...
public:
typedef FName fname;
...
};
由于 FString 中的 fname 是预定义的类型,因此可以直接使用。例如:
FString str = TEXT("Hello World!");
FString::fname fname = *str;
上面的代码将字符串 str 转换为了 fname,以便进行快速比较和索引查找。
fname 主要是为了提高字符串比较和索引查找的性能而设计的。在 Unreal Engine 4 中,fname 的实现使用了散列表和 Name 表,因此具有非常高的查找速度。例如,使用 strcmp() 函数比较两个字符串需要 O(n) 的时间复杂度,而使用 fname 的比较则只需要 O(1) 的时间复杂度,因为它只需要比较两个索引即可。
在 Unreal Engine 4 中,fname 的性能测试结果表明,它比普通字符串快 10 倍以上,这个巨大的差距可以显著提高程序的性能和响应速度。
总之,FString 中的 fname 是一种快速查找字符串的索引类型,它主要用于提高字符串比较和索引查找的性能,特别是在 Unreal Engine 4 中使用 Blueprint 的情况下。fname 的实现使用了散列表和 Name 表,具有非常高的查找速度,可以显著提高程序的性能和响应速度。