vector中資料型別為指標時的記憶體釋放

2021-10-01 21:38:53 字數 688 閱讀 9286

vector中資料型別為指標時,需要將內部指標釋放,否則會造成記憶體的洩露,釋放的方式有兩種:

方法1

vector<

int*

>a..

....

...while

(!a.

empty()

)

方法2

vector<

int*

>a..

....

...for

(auto it = a.

begin()

; it != a.

end(

); it++

)}

測試發現,方法 2 遠比方法 1 速度更快

當vector中的資料型別不為指標時,若vector陣列很大,占用大量記憶體,需要釋放,不能使用 clear() 函式,因為雖然 clear() 函式可以清空所有元素,但是 vector 所占用的記憶體空間依然如故,無法保證記憶體的**。可通過swap函式與乙個臨時變數交換,在臨時變數消亡時會呼叫 vector 的析構函式釋放記憶體

vector<

int>a..

....

...a.

swap

(vector<

int>()

)

vector存放內建資料型別(2)

容器 vector 演算法 for each 迭代器 vector iterator 1 include 2 include 3 include 4 using namespace std 56 為第三種遍歷方式提供函式名 7void myprint int val 811 12 vector存放內...

再談指標 指標的資料型別

一 指標定義 分三部分 例如 int i,char str,float k 1 i,str,k 是指標型別變數 2 表示定義的是乙個指標變數 而非一般變數 3 int char float 是指標所指向的記憶體空間中存放的資料的型別。可以這樣理解 int char float 看成是資料型別,i,s...

複雜資料型別 指標

指標是c語言的精髓,不會指標就意味你沒有學過c語言。1 指標的基本使用 格式 變數型別 變數名 指標變數只能儲存位址,能夠根據乙個位址值,訪問對應的儲存空間 指標變數前面的int double char等型別,代表它只能訪問此種型別的變數。include int main void change i...