我在使用 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
已经做到了。