Bailey先生从a previous question about vector capacity说:



因此,如果我理解正确,为了确保在超出容量之前不会发生重新分配,我是否必须预留两次?能否请您澄清一下?

我正在使用 vector 作为这样的内存堆栈:

std::vector<double> memory;
memory.reserve(size);
memory.insert(memory.end(), matrix.data().begin(), matrix.data().end()); // smaller than size
memory.resize(memory.capacity(), 0);

我需要保证上面没有发生重新分配。

谢谢。

ps:我也想知道,除了 vector 以外,是否还有更好的方法来以类似方式管理内存堆栈

最佳答案

我认为您看错了声明。允许保留将capacity设置为比保留的更大的数量。特殊的语言是,如果您保留的存储量比上次(但尚未达到当前容量)多,则允许实现重新分配。

关于c++ - C++ std::vector内存/分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2761570/

10-16 07:29