array 容器

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 容器中的所有元素,但前提是它們具有相同的長度和類型。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章