3
我有一個std :: vector,我知道它永遠不會增長 - 它總是會有n
元素(不幸的是,n
在編譯時不知道,所以我可以'使用std :: array)。我可以這樣做:防止std :: vector在push_back上調整大小
它正確地將其容量設置爲n
。但是,當我着手填補v
與push_back
,它會自動調整大小以2n
。
我意識到這是過早的優化,但它的煩我。有沒有辦法設置最大尺寸或什麼?
我有一個std :: vector,我知道它永遠不會增長 - 它總是會有n
元素(不幸的是,n
在編譯時不知道,所以我可以'使用std :: array)。我可以這樣做:防止std :: vector在push_back上調整大小
它正確地將其容量設置爲n
。但是,當我着手填補v
與push_back
,它會自動調整大小以2n
。
我意識到這是過早的優化,但它的煩我。有沒有辦法設置最大尺寸或什麼?
構造函數不會將矢量的容量設置爲n
,而是創建一個包含n
的矢量,該矢量使用blah
的默認構造函數構造。對於擁有Java或.NET背景的人來說,這可能會令人困惑,其中ArrayList
和List<T>
都具有設置初始容量的構造函數。
解決的辦法是做兩個步驟:
std::vector<blah> v; // create an empty vector
v.reserve(n); // increase capacity
對於它的價值,這將不警惕產能增長,如果有人誤用向量並導致加倍的能力。如果你想要這樣的安全,你可能需要推出自己的班級。 –
謝謝。對不起,這個愚蠢的問題! –