本單元重點回顧
陣列就是批量變數:一個陣列名稱搭配索引值,可以有效管理大量相同型態的資料;
a[i]用起來就是一個普通變數。索引從 0 開始:大小為 N 的陣列,合法索引是 0 ~ N-1,
a[N]會越界。題目可能用 0-base 或 1-base 敘述——先對齊,動筆前問自己「這題我的合法索引是幾到幾」。陣列大小用 const 常數指定:慣例是
const int MAX_N = 上限 + 5;開到題目上限、只用前 n 格——一處定義全處使用,改上限只改一行,編譯器還會幫你把關。遍歷是基本功:加總、找最大最小、倒序輸出、多遍掃描——「先存起來,再處理」是陣列題的標準節奏。
初始化很重要,也有成本:區域陣列未初始化是垃圾值,全域陣列自動為 0;
= {}全部歸零;固定的查表資料可以直接寫進大括號。但大陣列重複歸零會 TLE——多測資時只清用過的格子。字元陣列處理文字:一格住一個字元,
cin >> s[i]逐字讀入、自動跳過空白換行。陣列也能記錄與統計:
ans[num++]收集不定長度的結果;計數陣列cnt[x]++統計出現次數——索引=編號、值=資訊。未定義行為「不一定錯」最可怕:越界、未初始化可能在你的電腦上看起來正常,送 OJ 才爆——從寫法上直接避開。
多維陣列就是陣列的陣列:二維
a[i][j]是表格,存取時別搞混列欄。初始化沿用一維那套規則,只是「一組大括號裝一排」——最常用的還是= {}或開全域,把表格清成全 0。記憶體估算不容輕視:元素數 × 單個大小;大陣列開在全域,避開堆疊限制,也避免 MLE。