我在使用 vector 容器时遇到问题。我正在尝试提高将许多元素插入一个 vector 的性能。

基本上,如果需要,我使用vector::reserve扩展我的vector _children:

if (_children.capacity() == _children.size())
{
     _children.reserve(_children.size() * 2);
}

并使用vector::at()在_children的末尾插入一个新元素,而不是vector::push_back():
_children.at(_children.size()) = child;

_children中已经有一个元素,因此第一个元素应插入位置1,此时容量为2。

尽管如此,仍会引发out_of_range错误。有人可以向我解释,我在这里误解了吗?即使所选位置小于 vector 容量,也不能仅插入一个额外的元素吗?如果需要,我可以发布更多代码。

提前致谢。

/疯子

最佳答案

增加容量不会增加 vector 中元素的数量。它只是确保 vector 具有增长到所需大小的能力,而不必重新分配内存。即,您仍然需要调用push_back()

请注意,调用reserve()以几何方式增加容量是浪费精力。 std::vector已经做到了。

10-08 08:28
查看更多