【筆記】array 陣列

基本介紹

當我們需要存取一堆數據或資料時,總不能直接建立千個或上萬個變數吧!若這些數據具有相關性、型態一樣,可以使用 Array 來存取。陣列具有連續的記憶體位址,所以我們可以從頭走到尾來讀取 Array 中的數據。既可以減少變數的命名,還可以讓程式變得精簡、提高可讀性。

如何宣告

先引入標頭檔 #include <array>

基礎宣告

基礎宣告範例
1
array<int, 10> arr;

從上方範例可知 arr 是一個長度為 10 的整數陣列

在任何程式語言裡,陣列的第一項編號必為 0(編號我們通常稱之 index 索引)。所以若有一個長度為 10 的陣列,內容物的索引範圍為 0~9

設定初始值

設定初始值範例
1
2
arr<int, 5> arr_A{2, 5, 8, 3, 1};
arr<int, 5> arr_B{}; // 表示初始化 arr_B 元素皆為 0

注意!若陣列未做初始值,其中元素可能為亂數。

基礎使用

array 函式 功能
begin(), end(), cbegin(), cend() 提供正向跌代器
rbegin(), rend(), crbegin(), crend() 提供反向跌代器
size() 返回陣列大小
max_size() 返回陣列最大大小(由於 array 為固定序列,故返回值與 size() 一樣)
at(), operator[] 取得元素
front() 返回第一個元素
back() 返回最後一個元素
data() 返回元素的指標
fill() 填滿陣列
swap() 交換兩個陣列元素

查看更多可參考 cplusplus 官網

各種遍歷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 正向遍歷
for (int i = 0; i < 10; i++) {
cout << data[i] << "\n";
}
for (auto i : data) {
cout << i << "\n";
}
for (auto iter = data.begin(); iter != data.end(); ++iter) {
cout << *iter << "\n";
}
// 反向遍歷
for (int i = 9; i <= 0; i--) {
cout << data[i] << "\n";
}
for (auto iter = data.rbegin(); iter != data.rend(); ++iter) {
cout << *iter << "\n";
}