#include "CoreMinimal.h"
#include "Containers/TArray.h"
// 假设我们有一个自定义的结构体
struct FMyStruct
{
int32 Id;
FString Name;
FMyStruct(int32 InId, const FString& InName)
: Id(InId)
, Name(InName)
{
}
// 用于比较的函数对象
struct Predicate
{
int32 TargetId;
Predicate(int32 InTargetId)
: TargetId(InTargetId)
{
}
bool operator()(const FMyStruct& Other) const
{
return Other.Id == TargetId;
}
};
};
int main()
{
// 创建一个TArray并添加元素
TArray<FMyStruct> MyStructArray;
MyStructArray.Add(FMyStruct(1, "One"));
MyStructArray.Add(FMyStruct(2, "Two"));
MyStructArray.Add(FMyStruct(3, "Three"));
// 使用FindByPredicate查找特定Id的元素
int32 TargetId = 2;
FMyStruct* FoundStruct = MyStructArray.FindByPredicate(FMyStruct::Predicate(TargetId));
if (FoundStruct != nullptr)
{
// 输出找到的元素的名字
printf("Found struct with Id %d and Name %s\n", FoundStruct->Id, *FoundStruct->Name);
}
else
{
printf("No struct found with Id %d\n", TargetId);
}
return 0;
}