tags: FoShiShi

陣列

What

陣列就是 一排的格子,裡面存著資料

就想像是 一排箱子
每個箱子都裝了一顆球
總共有N箱子,編號從0 ~ N-1

通常需要搭配迴圈使用


When

當要去儲存一些 有絕對位置關係 的東西的時候
例:表格

你不會想要寫這種東西的:

int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10; cin >> a1 >> a2 >> a3 >> a4 >> a5 >> a6 >> a7 >> a8 >> a9 >> a10; ...

所以這種時候我們需要陣列


How

一維陣列

就是一列的格子,裡面可以存各種資料

陣列中存的東西的 型態要一樣

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

陣列的 引入值從0開始

宣告

資料型態 陣列名稱[陣列長度];

其中陣列長度必須是 已知的數 ,因為陣列的長度是個固定的值

引用陣列中數值

陣列名稱[位置];

其中要引用的位置(pos)必須在符合0 <= pos < 陣列長度

陣列 不能夠直接輸入/輸出
也就是

int arr[5]; cin >> arr;

是不合法的

必須要

int arr[5]; for(LL i = 0; i < 5; i ++ ) { cin >> arr[i]; }

才合法


多維陣列

可以是一個表格(二維)、方體(三維)、或更多維空間(>三維)
其實就是很多個一維陣列

下面是一個二維陣列

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

宣告

資料型態 陣列名稱[1維長度][2維長度]....[第n維長度];

要注意的東西跟一維陣列一樣

引用

陣列名稱[1維位置][2維位置]....[第n維位置]; // 0 <= 第i維位置 <= 第i維長度 - 1

要注意的東西跟一維陣列一樣


實際應用

題目1

輸入一數N
然後輸入N個數字,請反過來後輸出

solution

可以用陣列,搭配迴圈來輸入輸出這些值

#include<iostream> using namespace std; int main() { int N; cin >> N; int arr[N]; for(int i = 0; i < N; i ++ ) { cin >> arr[i]; } for(int i = N - 1; i >= 0; i -- ) { cout << arr[i] << " "; } cout << endl; }

題目2

輸入兩數N, M
然後輸入N * M個數字的二維表格,請上下左右翻轉輸出

solution

可以用二維陣列,搭配兩層迴圈來輸入輸出這些值

#include<iostream> using namespace std; int main() { int N, M; cin >> N >> M; int arr[N][M]; for(int i = 0; i < N; i ++ ) { for(LL j = 0; j < M; j ++ ) { cin >> arr[i][j]; } } for(int i = N - 1; i >= 0; i -- ) { for(LL j = M - 1; j >= 0; j -- ) { cout << arr[i][j] << " "; } cout << endl; } }