在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/