目錄
size 與 capacity區別
resize()並不能縮容
列印結果:#include#include#includeusing namespace std;
void printvector(vector& v) //vector型別
cout << endl;
}int main()
; vectorv1(arr, arr + sizeof(arr) / sizeof(int));//指標也是迭代器
cout << "size:" << v1.size() << endl;//元素個數
cout << "capacity:" << v1.capacity() << endl;//容量
printvector(v1);
v1.resize(2);
printvector(v1);
v1.resize(5);
printvector(v1);
v1.resize(6, 1);
printvector(v1);
cout << "size:" << v1.size() << endl;//元素個數
cout << "capacity:" << v1.capacity() << endl;//容量
return 0;
}
觀察發現:size<=capacity
列印結果:#include#include#includeusing namespace std;
int main()
cout << "size:" << v.size() << endl;//元素個數
cout << "capacity:" << v.capacity() << endl;//容量
v.resize(10);
cout << "size:" << v.size() << endl;//元素個數
cout << "capacity:" << v.capacity() << endl;//容量
vector(v).swap(v);
cout << "size:" << v.size() << endl;//元素個數
cout << "capacity:" << v.capacity() << endl;//容量
return 0;
}

這裡簡單的使用swap,清除元素並**記憶體
第一句產生乙個和v內容一模一樣的vector,只不過temp的容量是恰好滿足其大小的 。vector(v).swap(v); 作用相當於:
第二句把v和temp交換 ,然後temp就自動解析掉了
這樣寫的作用是:把v的容量縮小到最佳值,該例中執行這句時,capacity收縮到 10。
STL swap潛在的危險
在學習c 程式設計的時候,都使用過標準庫 stl 當中的swap,但更多的是swap int,int 或 者等等一些基本的型別,發散一下是否也可以用來置換自定義的乙個型別,比如說某一class 定義乙個class相當於定義乙個type了 先不從效率上來考慮,看看可行性如何。ps 歡迎討論。在stl中...
mysql收縮空間 Oracle表空間收縮方案
對於表空間收縮,oracle只提供擴大的功能,而不提供收縮。所以,要實現這樣的要求,就只能先建立乙個中間表空間,然後將待收縮表 應用背景 某些情況下,由於前期設計上沒有考慮全面,導致表空間預建太大,遠遠超出實際使用大小。於是,就出現了收縮表空間這樣的需求,即將這個表空間的占用空間進行收縮。處理方案 ...
ms sql收縮日誌
set nocount on declare logicalfilename sysname,maxminutes int,newsize int use tolldb ic 要操作的資料庫名 select logicalfilename tolldb ic log 日誌檔名 maxminutes ...