vector容器的坑

2021-06-29 02:34:50 字數 850 閱讀 3523

#include #include struct c 

~c()

};void test()

int main(void)

一領導發了一段**讓我們研究下,不研究不知道,一研究嚇一跳,竟然坑如此之多。

執行後的結果:

c(1)

~c() id=1

c(2)

~c() id=1

~c() id=2

c(3)

~c() id=1

~c() id=2

~c() id=3

c(4)

~c() id=1

~c() id=2

~c() id=3

~c() id=4

c(5)

~c() id=1

~c() id=2

~c() id=3

~c() id=4

~c() id=5

hero we go...

-------- before del ------------

~c() id=5

-------- after  del ------------

~c() id=2

~c() id=3

~c() id=4

~c() id=5

請按任意鍵繼續. . .

發現:每次vector空間不足時,都會重新申請導致之前的空間都會釋放掉,如果量級夠大,對效能的消耗可想而知。然後erase的時候會發生移位拷貝,然後釋放最後乙個資料空間。所以vector使用的時候最好先宣告空間,然後少做刪除的操作。插入刪除頻繁的邏輯就不適合於vector。

容器vector 的用法

vector 是向量型別,它可以容納許多態別的資料,如若干個整數,所以稱其為容器。vector 是c stl的乙個重要成員,使用它時需要包含標頭檔案 include 一 vector 的初始化 可以有五種方式,舉例說明如下 1 vectora 10 定義了10個整型元素的向量 尖括號中為元素型別名,...

容器vector的使用

底層結構 動態型別的資料表,可以存放任意型別的的元素 如vector int vector成員變數 iterator start iterator finish iterator end of storage 常用介面 1.建構函式宣告 void printvector const vector v...

vector向量容器

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