c++ 大元素向量

9o685dep  于 2023-04-01  发布在  其他
关注(0)|答案(1)|浏览(157)

假设我们的std::vector<T>中存储了一百万个元素,它的容量已经满了,现在我只想在其中添加一个元素,根据向量的概念,现在vector的容量将在堆中的新内存中增加一倍,所有100万个元素将被复制到新的内存位置。这似乎是一个巨大的任务。这里有没有什么方法可以避免这种复制,只在下一个位置添加这个新元素?
没什么。我想不出任何方法来避免。大多数开发人员建议我使用另一个容器。

luaexgnf

luaexgnf1#

根据向量的概念,现在向量的容量将在堆中的新内存中增加一倍,所有100万个元素将被复制到新的内存位置。
这并不完全正确。大多数std::vector的实现都有大约1.5的增长因子,而不是2.0。请参阅此问题以获取更多信息:
What is the ideal growth rate for a dynamically allocated array?
您可以使用std::vector::reserve控制容量及其增长。这样,您就可以避免复制容器的整个内容。

相关问题