通过阅读
当
假设我有一个初始容量为100的向量,在达到最大容量时,我想再分配额外的20个字节。
是否有可能做到这一点?
std::vector
的参考资料,我了解到:
当达到最大容量时调用
insert
会导致std::vector
重新分配内存(导致迭代器失效),因为新的内存具有更大的容量。目标是保持连续数据的保证。只要不超过最大容量,
insert
就不会导致这种情况(迭代器将保持完好)。
当
insert
自动调用 reserve
时,是否有办法控制需要预留多少新内存?假设我有一个初始容量为100的向量,在达到最大容量时,我想再分配额外的20个字节。
是否有可能做到这一点?
reserve()
将重新分配所有元素,然后在调用insert()
时再获得另一组副本。此外,reserve()
仅保证至少保留所请求的大小,并且实际上可能会保留更多。 - jrok