我有一个vector<int>* arr,它实际上是一个二维数组。
arr = new vector<int> [size];我就这么做可以吗
delete arr;arr[i]会被自动删除吗,因为它是一个标准向量?
发布于 2011-09-26 22:05:08
不,当您使用new[]时,您应该使用delete[]。
但这太疯狂了。您对一个维度使用了友好的友好容器,然后通过对外部维度使用手动动态分配来取消所有的好处。
取而代之的是,只需使用std::vector<std::vector<int> >,或者将两个维度展平为单个向量。
发布于 2011-09-26 22:02:44
你的代码坏了。您应该在new[]中使用delete[]
delete[] arr;一旦你修复了这个问题,你的代码就会正常工作。
我不得不同意评论者的观点,即C风格的向量数组看起来有点疯狂。为什么不使用向量的向量呢?这将为您处理内存管理。
发布于 2011-09-26 22:06:51
你在那里分配了一个向量数组。所以你需要删除数组:
delete [] arr;如果你打算分配一个包含'size‘元素的向量,你需要:
arr = new vector<int>(size); // don't use array delete for this though!https://stackoverflow.com/questions/7556255
复制相似问题