array 容器是 C++ 11 標準中新增的序列容器,簡單地理解,它就是在 C++ 普通數組的基礎上,添加了一些成員函數和全局函數。在使用上,它比普通數組更安全(原因後續會講),且效率並沒有因此變差。
和其它容器不同,array 容器的大小是固定的,無法動態的擴展或收縮,這也就意味着,在使用該容器的過程無法藉由增加或移除元素而改變其大小,它只允許訪問或者替換存儲的元素。
array 容器以類模板的形式定義在 <array> 頭文件,並位於命名空間 std 中,如下所示:
namespace std{
template <typename T, size_t N>
class array;
}
array 容器有多種初始化方式
std::array<double, 10> values;
std::array<double, 10> values {}; //所有的元素初始化爲 0 或者和默認元素
std::array<double, 10> values {0.5,1.0,1.5,,2.0};
array容器成員函數彙總
成員函數 | 功能 |
---|---|
begin() | 返回指向容器中第一個元素的隨機訪問迭代器。 |
end() | 返回指向容器最後一個元素之後一個位置的隨機訪問迭代器,通常和 begin() 結合使用。 |
rbegin() | 返回指向最後一個元素的隨機訪問迭代器。 |
rend() | 返回指向第一個元素之前一個位置的隨機訪問迭代器。 |
cbegin() | 和 begin() 功能相同,只不過在其基礎上增加了 const 屬性,不能用於修改元素。 |
cend() | 和 end() 功能相同,只不過在其基礎上,增加了 const 屬性,不能用於修改元素。 |
crbegin() | 和 rbegin() 功能相同,只不過在其基礎上,增加了 const 屬性,不能用於修改元素。 |
crend() | 和 rend() 功能相同,只不過在其基礎上,增加了 const 屬性,不能用於修改元素。 |
size() | 返回容器中當前元素的數量,其值始終等於初始化 array 類的第二個模板參數 N。 |
max_size() | 返回容器可容納元素的最大數量,其值始終等於初始化 array 類的第二個模板參數 N。 |
empty() | 判斷容器是否爲空,和通過 size()==0 的判斷條件功能相同,但其效率可能更快。 |
at(n) | 返回容器中 n 位置處元素的引用,該函數自動檢查 n 是否在有效的範圍內,如果不是則拋出 out_of_range 異常。 |
front() | 返回容器中第一個元素的直接引用,該函數不適用於空的 array 容器。 |
back() | 返回容器中最後一個元素的直接應用,該函數同樣不適用於空的 array 容器。 |
data() | 返回一個指向容器首個元素的指針。利用該指針,可實現複製容器中所有元素等類似功能。 |
fill(val) | 將 val 這個值賦值給容器中的每個元素。 |
array1.swap(array2) | 交換 array1 和 array2 容器中的所有元素,但前提是它們具有相同的長度和類型。 |