c++的vector容器相當於提供了長度可變的陣列。但是這個「陣列」的長度是如何增長的呢?
詳見c++ primer(第五版),9.4節。
寫了乙個程式來測試
1執行結果:/*vector物件是如何增長的
2* gcc version 4.8.13*/
45 #include 6 #include 7
8using
namespace
std;910
void printsizecapacity(vector&ivec)
1114
15int
main()
1624
25 cout << "
\ncall reserve() to make the vector grow to 50 elements
"<
26 ivec.reserve(50
);27
while (ivec.size() !=ivec.capacity())
30printsizecapacity(ivec);
3132 cout << "
\nadd 1 element
"<
33 ivec.push_back(0
);34
printsizecapacity(ivec);
3536 cout << "
\ncall shrink_to_fit()
"<
37ivec.shrink_to_fit();
38printsizecapacity(ivec);
3940
return0;
41 }
C 中vector的重要特點 物件動態增長
vector物件 以及其它標準容器庫物件 的重要屬性就是可以在執行時高效地新增元素。因為vector增長的效率高,在元素值已知的情況下,最好是動態地新增元素。所以雖然可以對給定元素葛素的vector物件預先分配記憶體,但是更加高效地方法就是先初始化乙個空的vector物件,然後再動態地增加元素。而v...
如何判斷物件是否死亡
主要的方法分為兩種 引用計數演算法和可達性分析演算法,目前常用的就是可達性分析演算法 對乙個物件新增乙個引用的計數器,當該物件被引用依次那麼計數器 1,如果引用被釋放,那麼計數器 1,這樣根據物件最終引用次數為0時,將該物件 缺點 當兩個物件互相的引用,引用計數器就無法得到為0,那麼也就無將物件就行...
vector的增長機制
include stdafx.h include include using namespace std int main int argc,char argv 效果將會如何?成員函式reserve進行一次重新分配,從而改變vector的capacity,使其大於或等於其引數。2.設想不是每次倍增v...