18 2 6 vector互換容器

2021-10-08 16:43:44 字數 1760 閱讀 4569

函式原型:

下面演示了利用swap函式互換兩個容器。

#include

#include

using

namespace std;

template

<

class

t>

void

printvector

(vector

&v) cout << endl;

}void

test1()

printvector<

int>

(v1)

; vector<

int>v2;

for(

int i =

10; i >

0; i--

) printvector<

int>

(v2)

; cout <<

"交換後:"

這個函式還有乙個小妙用,就是收縮空間。

我們知道,vector的容量總是大於等於元素個數,這有時候就會造成大量的空間都浪費了,比如下面這種情況:

//巧用swap

void

test2()

cout <<

"v的容量為:"

<< v.

capacity()

<< endl;

cout <<

"v的大小為:"

<< v.

size()

<< endl;

v.resize(3

);cout <<

"v的容量為:"

<< v.

capacity()

<< endl;

cout <<

"v的大小為:"

<< v.

size()

<< endl;

}

我們先存入100000個元素,後來又重置為3個元素,這樣會造成大量的空間浪費:

收縮不用的空間有兩種方法:

在test2裡加上:

vector<

int>

(v).

swap

(v);

將容器的空間收縮到元素個數那麼大,比較簡單,不再講解

cout <<

"v的容量為:"

<< v.

capacity()

<< endl;

cout <<

"v的大小為:"

<< v.

size()

<< endl;

這句話vector(v).swap(v);是用拷貝建構函式建立了乙個和v一樣的vector,再用新建立的容器呼叫swap函式,這樣v就是指新建立的只有3個元素的容器了。而原來的大空間容器由於這一行**,變成了臨時變數,這一行**執行完就會立刻銷毀。

vector容器09之互換容器 swap

函式原型 include using namespace std include vector之互換容器 void print vector int v cout endl void test print v vector int v1 5,20 print v1 互換容器 實際應用 巧用swap可...

C vector容器 互換容器

vector容器互換 功能描述 實現兩個容器內元素進行互換 函式原型 swap vec 將vec與本身的元素互換 1.基本使用 如下 include using namespace std vector容器互換 include 1.基本使用 void printvector vector int v...

vector向量容器

vector容器是陣列的乙個泛化推廣,不僅可以像陣列那樣進行元素的隨機訪問,還可以在容器的尾端插入新元素,實現了random access container和back insertion sequence概念。vector具有自動的記憶體管理功能,對於元素的插入和刪除,能夠動態調整占用的記憶體空間...