用vector pushback实现 TArray AddAeroed
时间: 2023-07-17 09:36:03 浏览: 92
使用C语言实现vector动态数组的实例分享
要使用 vector 的 push_back 函数实现 TArray 的 AddZeroed,我们需要做以下几个步骤:
1. 首先,我们需要使用 vector 容器来存储元素,所以需要包含 vector 头文件:
```cpp
#include <vector>
```
2. 接着,定义一个 vector 容器对象:
```cpp
std::vector<Type> myVector;
```
其中,Type 是指我们要存储的元素类型,比如,如果要存储整数类型,可以这样定义:
```cpp
std::vector<int> myVector;
```
3. 然后,我们可以使用 vector 的 push_back 函数向容器中添加元素:
```cpp
myVector.push_back(value);
```
其中,value 是要添加的元素值,比如,如果要添加一个默认值为零的整数,可以这样写:
```cpp
myVector.push_back(0);
```
4. 最后,我们可以将 vector 容器中的元素拷贝到 TArray 中,这可以通过 TArray 的 SetNum 函数来实现,如下所示:
```cpp
myTArray.SetNum(myVector.size());
FMemory::Memcpy(myTArray.GetData(), myVector.data(), sizeof(Type) * myVector.size());
```
其中,myTArray 是指我们要存储元素的 TArray 对象,Type 是指我们要存储的元素类型,myVector.size() 是指 vector 容器中元素的数量,myVector.data() 是指 vector 容器中元素的指针,sizeof(Type) * myVector.size() 是指需要拷贝的字节数。FMemory::Memcpy 是 UE4 中的一个内存拷贝函数,它可以将指定数量的字节从源内存区域复制到目标内存区域。
综上所述,以下是使用 vector push_back 函数实现 TArray AddZeroed 函数的示例代码:
```cpp
template<typename Type>
void AddZeroed(TArray<Type>& myTArray, int32 Count = 1)
{
std::vector<Type> myVector;
myVector.reserve(Count);
for (int32 i = 0; i < Count; ++i)
{
myVector.push_back(0);
}
myTArray.SetNum(myVector.size());
FMemory::Memcpy(myTArray.GetData(), myVector.data(), sizeof(Type) * myVector.size());
}
```
在上述代码中,我们首先定义了一个 vector 容器对象 myVector,并通过 reserve 函数预留了 Count 个元素的空间。接着,我们使用 for 循环向 myVector 中添加了 Count 个默认值为零的元素。最后,我们使用 SetNum 函数将 myVector 中的元素拷贝到 myTArray 中。
阅读全文