# 第十一周 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");
}