如何制作需要这样做的功能?

时间:2013-08-21 23:55:57

标签: c++ arrays structure dynamic-memory-allocation

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

structType * array=new structType[max];

我无法使用`vectors'。有谁知道怎么做?

1 个答案:

答案 0 :(得分:1)

根据我的评论,这是实施:

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];抛出则会泄漏内存。但我相信这足以让你开始。