vector容器互換
功能描述:
實現兩個容器內元素進行互換
函式原型:
swap(vec);//將vec與本身的元素互換
1.基本使用
**如下:
#include
using
namespace std;
//vector容器互換
#include
//1.基本使用
void
printvector
(vector<
int>v)
cout << endl;
}void
test01()
cout <<
"互換前:"
<< endl;
printvector
(v1)
; vector<
int>v2;
for(
int i =
10; i >
0; i--
)printvector
(v2)
; v1.
swap
(v2)
; cout<<
"互換後:"
<
printvector
(v1)
;printvector
(v2);}
intmain()
2.實際用途
巧用swap可以收縮記憶體空間
當我們重新指定大小的時候,vector容器的容量(capacity)不會變化,如果剛開始給vector容器push_back很多元素,後面resize時又將它變得很小,這個時候vector的size雖然變了,但是capacity是不會變的,這樣就會浪費記憶體空間,我們可以巧用swap解決這個問題
**如下:
#include
using
namespace std;
//vector容器互換
#include
//2.實際用途
void
printvector
(vector<
int>v)
cout << endl;
}void
test01()
cout <<
"v的容量"
<< v.
capacity()
<< endl;
cout <<
"v的大小"
<< v.
size()
<< endl;
v.resize(3
);//重新指定大小
cout <<
"v的容量"
<< v.
capacity()
<< endl;
cout <<
"v的大小"
<< v.
size()
<< endl;
//巧用swap收縮記憶體
vector<
int>
(v).
swap
(v);
cout <<
"v的容量"
<< v.
capacity()
<< endl;
cout <<
"v的大小"
<< v.
size()
<< endl;
}int
main()
vector(v).swap(v);
為什麼可以收縮空間呢?
vector < int > (v) :
用v目前所用元素個數來初始化匿名物件
那當我們使用了swap(v)//容器交換後
等vector< int >(v).swap(v)這行**執行完,編譯器就會自動**匿名物件,所以那塊很大的記憶體就會被**,不再占用空間
C vector容器型別
vector類為內建陣列提供了一種替代表示,與string類一樣 vector 類是隨標準 c 引入的標準庫的一部分 為了使用vector 我們必須包含相關的標頭檔案 include 使用vector有兩種不同的形式,即所謂的陣列習慣和 stl習慣。1.定義乙個已知長度的 vector vector...
C vector容器型別
vector類為內建陣列提供了一種替代表示,與string類一樣 vector 類是隨標準 c 引入的標準庫的一部分 為了使用vector 我們必須包含相關的標頭檔案 include 使用vector有兩種不同的形式,即所謂的陣列習慣和 stl習慣。1.定義乙個已知長度的 vector vector...
C vector容器型別
vector類為內建陣列提供了一種替代表示,與string類一樣 vector 類是隨標準 c 引入的標準庫的一部分 為了使用vector 我們必須包含相關的標頭檔案 include 使用vector有兩種不同的形式,即所謂的陣列習慣和 stl習慣。1.定義乙個已知長度的 vector vector...