size:vector容器真實大小,對應resize調整size大小,增加的元素為預設值。
capacity:預分配的記憶體空間,對應reserve調整capacity大小。只是調整capacity大小,記憶體還是野的,如果用「」進行訪問,可能出現陣列越界。
#include#includeusing namespace std;
int main()
cout << vec.size() << endl;//輸出100
cout << vec.capacity() << endl;//輸出141
vec.reserve(200);
cout << vec.capacity() << endl;//輸出200
vec.resize(150);
cout << vec.size() << endl;//輸出150
//cout << vec[199] << endl;//發生陣列越界
}
//1.清除元素不**記憶體
vec.clear();
cout << vec.size() << endl;//輸出0
cout << vec.capacity() << endl;//輸出141
//2.清除元素**記憶體
vector().swap(vec);//或者vec.swap(vector());
cout << vec.size() << endl;//輸出0
cout << vec.capacity() << endl;//輸出0
vector清空與容量處理
vector的clear操作可以將vector的資料清空,但是vector的容量不會變化,即分配給vector的記憶體不會收回。如果想收回這些記憶體,可以採取下面的方法 vectornum num.push back 1 num.push back 2 vector swap num 或者 num....
堆積木 vector 清空記憶體
蒜頭君有 n 塊積木,編號分別為 1 到 n。一開始,蒜頭把第 i 塊積木放在位置 i。蒜頭君進行 m 次操作,每次操作,蒜頭把位置 b 上的積木整體移動到位置 a 上面。比如 1 位置的積木是 1,2 位置的積木是 2,那麼把位置 2 的積木移動到位置 1 後,位置 1 上的積木從下到上依次為 1...
vector清空 ,防止記憶體洩露
注 使用過第三種方法,可行!vector vecint for int i 0 i 500 i int j vecint.capacity j 512 i vecint.size i 500 第一種辦法使用 clear 清空元素,但不 空間 vecint.clear j vecint.capacit...