我遇到了矢量容器的問題。我正試圖提高將大量元素插入到一個向量中的性能。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)。並且,請提供幫助您的任何答案,並在解決問題時接受答案。 –