---
# System prepended metadata

title: 第十一周 Array 容器

---

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