我遇到了矢量容器的问题。我正试图提高将大量元素插入到一个向量中的性能。C++在矢量的末尾插入元素
基本上我用载体::储备,扩大我的矢量_children如果需要的话:
if (_children.capacity() == _children.size())
{
_children.reserve(_children.size() * 2);
}
,并使用矢量::在()在_children而不是向量的末尾插入一个新的元素::的push_back():
_children.at(_children.size()) = child;
_children具有已经在它的一个元件,所以第一个元件应在位置1处被插入,并在该时的容量为2
尽管这样,一个out_of_range错误被抛出。有人可以向我解释,我在这里误解了什么?即使选择的位置小于矢量容量,是否可以插入额外的元素?如果需要,我可以发布一些更多的代码。
在此先感谢。
/mads
你的编译器实现的'需要更多时VECTOR'可能已经双打分配的内存。 'reserve'更适用于在添加任何数据之前知道向量大小的上限。 – aschepler
你好,马兹。欢迎来到Stack Overflow。不要忘记阅读[faq](http://stackoverflow.com/faq)。并且,请提供帮助您的任何答案,并在解决问题时接受答案。 –