# 第十一周 Array 容器 #### array 容器的大小是固定的,無法動態的擴充套件或收縮,只允許存取或者替換儲存的元素,但優點是array 容器中已經內建了很多函式,因此相較一般的矩陣array容器的運行效率比較快 ## 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 容器中的所有元素,但前提是它們具有相同的長度和型別 ## 練習c * 說明: 宣告了個長度等於5之Array容器之整數陣列 arr1-arr3;其中arr3之預設值等於{6,7,8,9,0},執行以下步驟:1.將{1,2,3,4,5} 設定給arr1,並顯示第1 個與最後 1個元素。2.將arr1設定給 arr2。3. 將arr2與arr3 交換。 ```cpp= #include <iostream> #include <array> using namespace std; int main() { array<int, 5> arr1; array<int, 5> arr2; array<int, 5> arr3 = { 6,7,8,9,0 }; for (int i = 0; i < arr1.size(); i++) arr1[i] = i + 1; cout << "第一個元素:" << arr1.front() << endl; cout << "最後一個元素:" << arr1.back() << endl; arr2 = arr1; cout << "arr2="; for (int i = 0; i < arr2.size(); i++) cout << arr2[i] << " "; cout << endl; cout << "arr2與arr3交換:" << endl; arr3.swap(arr2); cout << "arr2="; for (auto item : arr2) cout << item << " "; cout << endl; cout << "arr3="; for (auto item : arr3) cout << item << " "; cout << endl; system("pause"); }