的矢量假設如何保留內存爲載體
vector<vector<shared_ptr<Base>>> vec
vec.reserve(100)
vec[0].reserve(20) // Error : vector subscript out of range
我想保留內存兩種外載體和內載體。 我知道vec
是空的,所以我不能爲內部向量保留內存。之後我只能使用resize()
或shrink_to_fit()
。但是,使用resize()
或shrink_to_fit()
是沒用的,因爲這不是我想要做的。
用於內矢量保留存儲器的目的是試圖分配存儲器以及爲後來提高搜索速度內元件。我只是想知道如果我不保留內存,預先分配的內存是昂貴和混亂。
我想問:
- 是否有什麼辦法可以保留內存內矢量
- 難道我的「關於左右的內存壞分配的概念,將不爲載體保留內存引起的「對嗎?
對不起,我的英文不好,我使用VC++ 2010
[vector :: resize()和vector :: reserve()之間的選擇可能重複(http://stackoverflow.com/questions/7397768/choice-between-vectorresize-and-vectorreserve)。 – mfontanini 2013-04-25 17:19:28
直到您通過分析工具證明這是通過代碼的關鍵條帶來問題時,請不要擔心。 – djechlin 2013-04-25 17:19:33
Bjarne Stroustrup本人不再擔心預留矢量空間,請參閱http://www.stroustrup.com/bs_faq2.html#slow-containers – 2013-04-25 17:23:42