關於vector的使用

2021-06-23 06:35:57 字數 559 閱讀 4780

vector在做push_back的操作的時候如果預置空間不足寫入,則會重新申請記憶體,並把之前的資料拷貝過來。

因此當乙個vector物件要做大量push_back操作的時候,如果知道要push進去的數量,最好先用reserve開闢好空間,效率會高很多。

再者,使用vector的時候要慎重使用引用。

如果建立了指向vector元素的引用,此後如果vector物件做了push_back操作,而剛好空間又不足的時候,會導致記憶體重建,因此導致引用指向非法空間。

比如這樣:

struct obj

;std::vectorvecobj;

vecobj.push_back( obj() );

vecobj.push_back( obj() );

vecobj.push_back( obj() );

for( int i = 0; i < vecobj.size(); ++ i )

el.a = 2; //非法記憶體操作,段錯誤

}

這種時候如果用值儲存元素就會避免bug的產生

關於vector使用的優化

1 class a 10 a const a a 11 m x a.m x 1215 1 void solve 2 1 output 23 a int 4 a const a 5 a int 6 a const a 7 a const a 8 a int 9 a const a 10 a const...

關於vector的排序

vector buildstoreys 按樓層排序 方法1 map mapstoreys for auto istorey buildstoreys buildstoreys.clear auto iter mapstoreys.begin while iter mapstoreys.end 按樓層...

關於vector的用法

1.標頭檔案 include 2.用法 1.vectorb 只是代表著 建立了乙個vector的空的物件 別以為這時候的b 0 b 1 等於0 天真。2.vectorv3 10,0 建立乙個有10個元素0的容器 這個時候b 0 0 b 9 0!這個跟陣列一樣 還是會超時 如果你申請的比較大的話 一般...