在C语言中,我会使用realloc完成它。

在C++中,通常会考虑使用STL vector类。

但是,如何在不使用上述任何解决方案的情况下,在C++中正确调整数组的大小?

最佳答案

在C++中,没有等效的realloc。您将需要手动复制数组并复制旧元素。幸运的是,多亏了std::copy中的<algorithm>函数,这还不错:

size_t k =  /* ... */
T* buffer = /* .. get old buffer of size k. .. */

T* newBuffer = new T[newSize];  // Assume newSize >= k
std::copy(buffer, buffer + k, newBuffer);

delete [] buffer;
buffer = newBuffer;

希望这可以帮助!

编辑:重新排列了最后两行!哎呀!

关于C++:调整动态分配数组大小的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5371162/

10-10 18:50
查看更多