gpt4 book ai didi

c++ - 将动态分配的指针数组调整为类

转载 作者:行者123 更新时间:2023-11-30 01:09:48 24 4
gpt4 key购买 nike

如何在不使用 vector 的情况下调整数组的大小?我要调整大小的数组是一个指向类的指针

class A
{
private:
B * b;
int numOfItems;
int maxNumOfItems;

public:
A();
~A();
resizeMX();
};


A::A()
{
numOfItems = 0;
maxNumOfItems = 20;
b = new B[maxNumOfItems];
for(int i=0;i<maxNumOfItems ;i++)
{
b[i] = 0;
}
}

A::~A()
{
for(int i=0;i<numOfItems;i++)
{
delete [] b;
}
}

void A::resizeMX(const B & obj)
{
bool value=false;
if(numOfItems<=maxNumOfItems && value == false)
{
//assign values to *b in for loop
}
else
{
//resize index of *b

我知道我们应该动态分配新内存。是这样的吗?

       ++maxNumOfItems; 
b=new B[maxNumOfItems];
//keep previous assigned values and add new values at the end
for(int j=numOfItems;j<maxNumOfItems;j++)
{
//assign values to b[j]
}
}
numOfItems++;
}

假设我确实重载了 = 运算符

最佳答案

您不能调整数组的大小,您只能分配新的(具有更大的大小)并复制旧数组的内容。如果您不想使用 std::vector(出于某种原因),这里是它的代码:

int size = 10;
int* arr = new int[size];

void resize() {
size_t newSize = size * 2;
int* newArr = new int[newSize];

memcpy( newArr, arr, size * sizeof(int) );

size = newSize;
delete [] arr;
arr = newArr;
}

关于c++ - 将动态分配的指针数组调整为类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39437153/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com