我问这个问题是为了学习;通常我会使用 vector 或链表来解决这个问题。
如果动态数组的大小在整个主代码中发生变化,使用这种方法更有效或更合乎逻辑:创建一个比前一个大一半大小的新动态数组并将以前的元素复制到其中,或使用 realloc 使动态数组更大?如果其中之一更有效或更合乎逻辑,为什么?
最佳答案
realloc
如果有空间,可以扩展现有的内存块,完全避免整个分配 + 复制 + 释放过程。使用 new[]
不允许这种可能性。
如果您正在编写惯用的 C++,您应该使用 std::vector
,它在引擎盖下做同样的事情。但是为了学习,如果没有std::vector
然后使用 realloc
.
请注意 realloc
不是对象感知的。它不会调用构造函数和析构函数。如果你打算在 C++ 中使用它,你最好确切地知道你在做什么!
关于c++ - 使用 realloc 增加大小与创建更大的动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61146284/