我正在使用c++和动态分配在structs中工作,我需要使函数自动增加数组的大小:

structType * array=new structType[max];


而且我不能使用“向量”。有人知道该怎么做吗?

最佳答案

根据我的评论,这里是实现:

void resizeArray(structType*& oldArray, size_t oldSize, size_t newSize) {
    structType* newArray = new structType[newSize];
    for (size_t i = 0; i < std::min(oldSize, newSize); ++i)
        newArray[i] = oldArray[i];
    delete[] oldArray;
    oldArray = newArray;
}

structType* array = new structType[max];
resizeArray(array, max, max + 10);


请注意,上面的代码并非异常安全:如果newArray[i] = oldArray[i];抛出,则将泄漏内存。但是我相信这足以让您入门。

07-28 11:47