20 容器vector的深度探索

2021-08-11 18:20:57 字數 1155 閱讀 3688

這篇主要介紹g2.9中stl容器vector的設計結構。vector是連續的空間結構,並可以向容器尾部增加元素。

解析:a、vector設計的時候,有3個元素:start、finish和end_of_storage。其中start是元素首迭代器,finish是元素尾迭代器,end_of_storage是容器的尾迭代器。

b、向vector中增加元素,如果元素超過vector此時的容量,則vector的分配器會在記憶體中另外找個地方,將容器擴充套件為原來的2倍,然後將元素複製過去。

解析:a、可以看出三個元素start、finish、end_of_storage的設計時iterator結構,而此時iterator就是指標;

b、vecto有一些通用的函式,如通過begin()函式,返回start,即首迭代器,能取出首元素等等。

c、當向vector中增加元素時,使用puch_back()函式,如下:

①判斷容器是否已滿,如果沒有則實現insert_aux()函式:

②insert_aux()函式再次檢查容器是否已滿(因為有可能該函式被別的函式用到):

③當容器空間已經滿後,就會擴充套件容器,如下:

解析:a、首先判斷該容器的大小是否為0,若為0,則容器1個元素的空間。若不是,則擴充套件容器為原理的2倍;

b、再使用分配器分配此時的記憶體;

c、然後將原理的元素拷貝到新的記憶體空間中。拷貝的方式分為兩步,第一步是將首元素與該插入元素的資料進行拷貝,第二步是將該插入元素的後面元素進行拷貝。

vector容器的坑

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

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