C++ 庫 - <vector>



簡介

向量是能夠改變大小的順序容器。容器是儲存相同型別資料的物件。順序容器嚴格按照線性順序儲存元素。

向量將元素儲存在連續的記憶體位置,並允許使用下標運算子 [] 直接訪問任何元素。與陣列不同,向量可以在執行時根據需要縮小或擴充套件。向量的儲存由系統自動處理。

為了支援執行時的收縮和擴充套件功能,向量容器可能會分配一些額外的儲存空間以適應可能的增長,因此容器的實際容量大於大小。因此,與陣列相比,向量消耗更多的記憶體,以換取以有效的方式管理儲存和動態增長。

零大小的向量也是有效的。在這種情況下,vector.begin() 和 vector.end() 指向相同的位置。但是呼叫 front() 或 back() 的行為是未定義的。

定義

以下是來自 <vector> 標頭檔案的 std::vector 的定義

template < class T, class Alloc = allocator<T> > class vector;

引數

  • T - 包含的元素的型別。

    T 可以被任何其他資料型別替換,包括使用者定義的型別。

  • Alloc - 分配器物件的型別。

    預設情況下,使用分配器類模板,它定義了最簡單的記憶體分配模型並且與值無關。

成員型別

以下成員型別可以用作成員函式的引數或返回型別。

序號 成員型別 定義
1 value_type T(模板的第一個引數)
2 allocator_type Alloc(模板的第二個引數)
3 reference value_type&
4 const_reference const value_type&
5 pointer value_type*
6 const_pointer const value_type*
7 iterator 指向 value_type 的隨機訪問迭代器
8 const_iterator 指向 const value_type 的隨機訪問迭代器
9 reverse_iterator std::reverse_iterator <iterator>
10 const_reverse_iterator std::reverse_iterator <const_iterator>
11 size_type size_t
12 difference_type ptrdiff_t

來自 <vector> 的函式

以下是來自 <vector> 標頭檔案的所有方法列表。

建構函式

序號 方法 & 描述
1 vector::vector 預設建構函式

構造一個空容器,其中包含零個元素。

2 vector::vector 填充建構函式

構造一個包含n個元素並將val分配給每個元素的容器。

3 vector::vector 範圍建構函式

構造一個包含從firstlast

4 vector::vector 範圍內的所有元素的容器。

構造一個容器,其中包含現有容器x

5 vector::vector 中存在的每個元素的副本。

使用移動語義構造容器的內容。

6 vector::vector 初始化列表建構函式

從初始化列表構造容器。

解構函式

序號 方法 & 描述
1 vector::~vector

透過釋放容器記憶體來銷燬容器。

成員函式

序號 方法 & 描述
1 vector::assign 填充版本

透過替換舊值將新值分配給向量元素。

2 vector::assign 範圍版本

透過替換舊值將新值分配給向量元素。

3 vector::assign 初始化列表版本

透過替換舊值將新值分配給向量元素。

4 vector::at

返回向量中位置n處存在的元素的引用。

5 vector::back

返回對向量最後一個元素的引用。

6 vector::begin

返回一個指向向量第一個元素的隨機訪問迭代器。

7 vector::capacity

返回分配儲存的大小,以元素表示。

8 vector::cbegin

返回一個指向向量開頭的常量隨機訪問迭代器。

9 vector::cend

返回一個指向向量開頭的常量隨機訪問迭代器。

10 vector::clear

透過從向量中刪除所有元素並設定向量的大小為零來銷燬向量。

11 vector::crbegin

返回一個指向容器反向開頭的常量反向迭代器。

12 vector::crend

返回一個指向向量反向末尾的常量反向迭代器。

13 vector::data

返回指向向量容器第一個元素的指標。

14 vector::emplace

透過在position.

15 處插入新元素來擴充套件容器

在向量末尾插入新元素。

16 vector::empty

測試向量是否為空。

17 vector::end

返回一個指向向量容器中最後一個元素的下一個位置的迭代器。

18 vector::erase位置版本

從向量中刪除單個元素。

19 vector::erase範圍版本

從向量中刪除單個元素。

20 vector::front

返回對向量第一個元素的引用。

21 vector::get_allocator

返回與向量關聯的分配器。

22 vector::insert 單個元素版本

透過在position

23 vector::insert 填充版本

透過在容器中插入新元素來擴充套件向量。

24 vector::insert 範圍版本

透過在容器中插入新元素來擴充套件向量。

25 vector::insert 移動版本

透過在容器中插入新元素來擴充套件向量。

26 vector::insert 初始化列表版本

透過在容器中插入新元素來擴充套件向量。

27 vector::max_size

返回向量可以容納的最大元素數。

28 vector::operator= 複製版本

透過替換舊值將新內容分配給向量,並在必要時修改大小。

29 vector::operator= 移動版本

透過替換舊值將新內容分配給向量,並在必要時修改大小。

30 vector::operator = 初始化列表版本

透過替換舊值將新內容分配給向量,並在必要時修改大小。

31 vector::operator[]

返回向量中位置n.

32 處存在的元素的引用。

從向量中刪除最後一個元素,並將向量的大小減少一個。

33 vector::push_back

在向量末尾插入新元素,並將向量的大小增加一個。

34 vector::rbegin

返回一個指向向量最後一個元素的反向迭代器。

35 vector::rend

返回一個指向向量反向末尾的反向迭代器。

36 vector::reserve

請求將向量的容量至少保留足夠的空間以容納n個元素。

37 vector::resize

更改向量的大小。

38 vector::shrink_to_fit

請求容器將其容量減小以適合其大小。

39 vector::size

返回向量中存在的元素數量。

40 vector::swap

將向量的內容與向量x.

的內容交換。

序號 方法 & 描述
1 非成員過載函式

測試兩個向量是否相等。

2 operator !=

測試兩個向量是否相等。

3 operator <

測試第一個向量是否小於另一個向量。

4 operator <=

測試第一個向量是否小於或等於另一個向量。

5 operator >

測試第一個向量是否大於另一個向量。

6 operator >=

測試第一個向量是否大於或等於另一個向量。

7 swap

交換兩個向量的內容。

廣告