📜  ue4数组复制c++(1)

📅  最后修改于: 2023-12-03 14:48:08.866000             🧑  作者: Mango

UE4数组复制C++

在UE4中,可以使用STL风格的数组TArray来管理数据集合,包括添加、查找、排序等操作。有时候我们需要对数组进行复制并且做一些修改,本文将介绍UE4中如何进行数组深度和浅度复制,以及如何批量替换数组中的元素。

数组复制
浅度复制

浅度复制简单来说就是复制数组的引用,也就是两个数组指向同一个内存地址。当原始数组被修改时,复制的数组也会跟着发生改变。

在UE4中,可以使用Copy或者赋值运算符来进行浅度复制。

// 原始数组
TArray<int> OriginalArray;
OriginalArray.Add(1);
OriginalArray.Add(2);
OriginalArray.Add(3);

// 浅度复制
TArray<int> ShallowCopyArray = OriginalArray;
ShallowCopyArray.Add(4);

// 输出结果:
// OriginalArray: 1, 2, 3, 4
// ShallowCopyArray: 1, 2, 3, 4
深度复制

深度复制在复制数组时会对数组中的元素进行完全复制,也就是说两个数组是完全独立的。即使一个数组的元素发生改变,另一个数组也不会被影响。

在UE4中,可以使用DeepCopy来进行深度复制。

// 原始数组
TArray<int> OriginalArray;
OriginalArray.Add(1);
OriginalArray.Add(2);
OriginalArray.Add(3);

// 深度复制
TArray<int> DeepCopyArray = OriginalArray.DeepCopy();
DeepCopyArray.Add(4);

// 输出结果:
// OriginalArray: 1, 2, 3
// DeepCopyArray: 1, 2, 3, 4

需要注意的是,进行深度复制时,数组中元素的类型必须支持复制构造函数,否则会编译错误。如果需要对自定义类型进行深度复制,需要自定义复制构造函数。

批量替换

在UE4中,可以使用TArray::Append函数来进行数组的批量替换。该函数接受一个数组作为参数,并将该数组添加到末尾。

// 原始数组
TArray<int> OriginalArray;
OriginalArray.Add(1);
OriginalArray.Add(2);
OriginalArray.Add(3);

// 替换数组
TArray<int> ReplaceArray;
ReplaceArray.Add(4);
ReplaceArray.Add(5);

// 批量替换
OriginalArray.Append(ReplaceArray);

// 输出结果:
// OriginalArray: 1, 2, 3, 4, 5

需要注意的是,进行批量替换时,替换数组的类型必须与原始数组相同。否则会编译错误。