C 基礎 vector 向量

2021-09-27 11:55:18 字數 921 閱讀 5289

vector 是序列式容器(sequence containers)中的一種,是乙個封存了動態大小陣列的順序容器。可以簡單的認為,vector就是能夠存放任意資料的動態陣列,隨著元素的加入,它的內部機制會自行擴充空間以容納新元素。

線性連續空間,兩個迭代器start和finish分別指向配置得來的連續空間中目前已經被使用的範圍(符合stl規範之「前閉後開」),並以迭代器end_of_storage指向整塊的連續空間(含備用空間)的尾部。

vector中有容量(capacity)這個概念,這是為了降低空間配置時的執行速度,乙個vector的容量永遠大於或等於其大小

//在vector當中包含三個迭代器成員變數,分別是:

iterator start                       // 表示目前使用空間的頭

iterator finish                     // 表示目前使用空間的尾

iterator end_of_storage    // 表示目前可用空間的尾

這裡需要注意的是,所謂動態增加大小,並不是在原空間之後接續新空間(因為無法保證原空間之後尚可有可供配置的空間),而是

以原大小的兩倍配置一塊較大空間,然後將原內容拷貝過來,然後才開始在原內容之後構造新元素,並釋放原空間

。因此,對vector的任何操作,一旦引起空間重新配置,指向原vector的所有迭代器就都失效了。這是程式設計師易犯的乙個錯誤,務需小心。

注意事項:在使用迭代器遍歷操作vector時,切記不要在迴圈內部進行任何改變vector大小的操作,一旦引起資料空間重新配置或資料移動,則會造成迭代器失效的狀況,進而引發無法預知的錯誤。

學習C 向量 vector

一 向量的介紹 向量vector是一種物件實體,能夠容納許多其他型別相同的元素,因此又被稱為容器。與string相同,vector 同屬於stl standard template library,標準模板庫 中的一種自定義的資料型別,可以廣義上認為是陣列的增強版。在使用它時,需要包含標頭檔案 ve...

學習C 向量 vector

一 向量的介紹 向量 vector 是一種物件實體,能夠容納許多其他型別相同的元素,因此又被稱為容器。與string相同,vector 同屬於stl standard template library,標準模板庫 中的一種自定義的資料型別,可以廣義上認為是陣列的增強版。在使用它時,需要包含標頭檔案 ...

學習C 向量 vector

一 向量的介紹 向量 vector 是一種物件實體,能夠容納許多其他型別相同的元素,因此又被稱為容器。與string相同,vector 同屬於stl standard template library,標準模板庫 中的一種自定義的資料型別,可以廣義上認為是陣列的增強版。在使用它時,需要包含標頭檔案 ...