C++ Vector 介紹
簡介
Vector 是 STL 內含的一個容器,空間不夠時會自動擴大空間,可以想像成是一個提供許多功能的陣列,它的內部結構其實就是一個動態陣列及其他一些 Data Members 形成的,有許多 Functions 可以使用,非常方便。
使用方式
include
使用前需要先 #include <vector>
變數宣告
Vector <Variable type> name
Variable type:變數型態,如 int, unsigned int, short, char …等等,也可以是自己定義的 Struct 或 Class。Vector <Variable type> name(i)
建構內含 i 個初始值元素的 Vector。
成員函式
新增與刪除元素
push_back(value)
:新增一個值為 value 的元素到 Vector 的尾端。 當空間不夠時會自己擴大空間。insert(pos, value)
:新增一個值為 value 的元素到 pos 的前方。insert(pos, num, value)
:新增 num 個值為 value 的元素到 pos 的前方。erase(pos)
:刪除位於 pos 的一個元素。erase(begin, end)
:刪除位於 begin 到 end 之間 ( 不包括 end ) 的所有元素。clear()
: 刪除所有元素。
存取元素
[i]
:存取第 i 個元素。( 從 0 開始 )at(i)
:存取第 i 個元素 ( 從 0 開始 ) 與上一個的差別在於這種使用這種方式存取會檢查 i 的範圍,大家可以嘗試一下兩者存取超過範圍的元素的差別。front()
:回傳位於 Vector 的第一個元素。back()
:回傳位於 Vector 的最後一個元素。
取得長度 / 容量
size()
:取得目前 Vector 內的元素個數。capacity()
:取得目前 Vector 內動態陣列的大小,通常不會使用到。empty()
:當 Vector 是空的時候 ( Size 為 0 ) 回傳True
反之則回傳False
。
修改長度 / 容量
resize(i)
:修改 Vector 內的元素個數。( 當 i < 原本的 Size 時,多出來的元素會被清除,當 i > 原本的 Size 時,新增元素的值為初始值 )reserve()
:修改 Vector 內動態陣列的大小 ( 只能變大不能縮小 ),通常不會使用到。
Iterator
begin()
:回傳一個指向 Vector 內第一個元素位置的 Iterator。end()
:回傳一個指向 Vector 內最後一個元素後面位置的 Iterator。( 注意不是最後一個元素 )rbegin()
:回傳一個指向 Vector 內最後一個元素位置的反向 Iterator。rend()
:回傳一個指向 Vector 內第一個元素位置的反向 Iterator。
補充
Size ( 長度 ) 與 Capacity ( 容量 ) 的差別:Size 代表的是這個陣列裡面放置的元素數量,而 Capacity 則是代表這個陣列的大小。例如:
1 | int *Vec = new int[5](); |
此時 Vector 的 Size 就是 2,而 Capacity 就是 5。Size 可以擴大也能縮小,但 Capacity 只能擴大無法縮小。一般在使用 Vector 時只須注意 Size 即可,因為當 Capacity 不夠需要擴大時 Vector 會自動幫我們擴大。
簡單實作
1 |
|
參考資料
<vector> - C++ Reference
C/C++ - Vector (STL) 用法與心得完全攻略
[教學]C++ Vector 詳細用法
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Larry's notes!
評論