小编for*_*ies的帖子

在C++中扩展数组的问题

我正在为课堂写作模拟,其中一部分涉及生物的繁殖.我的生物被保存在一个阵列中,我需要在它们繁殖时增加阵列的大小.因为我有多个生物的多个类,我使用了一个模板:

template <class orgType>
void expandarray(orgType* oldarray, int& numitems, int reproductioncount)
{
    orgType *newarray = new orgType[numitems+reproductioncount];

    for (int i=0; i<numitems; i++) {
        newarray[i] = oldarray[i];
    }

    numitems += reproductioncount;

    delete[] oldarray;
    oldarray = newarray;
    newarray = NULL;
}
Run Code Online (Sandbox Code Playgroud)

但是,这个模板似乎在某种程度上破坏了我的数据.我可以在没有再现的情况下运行该程序(注释掉对expandarray的调用),但调用此函数会导致程序崩溃.程序在expandarray函数中不会崩溃,但稍后会在访问冲突时崩溃.

我已经编写了数百次扩展数组的函数,而且我不知道这次搞砸了什么.我的功能有什么明显的错误吗?它看起来对你好吗?

编辑:谢谢大家的帮助.我无法相信我错过了一些如此明显的东西.为了回应使用std::vector:我们还没有在课堂上讨论它,而且看起来很傻,我需要使用我们教过的方法编写代码.

c++ arrays expand templates

2
推荐指数
1
解决办法
407
查看次数

标签 统计

arrays ×1

c++ ×1

expand ×1

templates ×1