C vector容器 互換容器

2021-10-18 08:00:20 字數 2128 閱讀 2477

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...