語法書 / AA 競程語法書 下冊 / 第十一單元 / 本單元語法速查表

本單元語法速查表

語法 用途 範例/備註
int *p = &n; 宣告指標,存入變數 n 的位置 * 跟著變數名:int *a, *b;
&n 取得變數的記憶體位置(取址)
*p 取出指標指向位置的值(取值) *(a + i) 就是 a[i]*p + 2 少了括號意思全變
void f(int *a) 參數收「位置」,函式裡用 *a 動到外面的變數 呼叫時寫 f(&x);C 語言唯一的做法
void f(int a[], int n) 陣列參數=指標,長度要自己另外傳 等同 void f(int *a, int n)
sort(a, a + n) 排序 a[0] ~ a[n-1](由小到大) #include <algorithm>;左閉右開
sort(a + 1, a + n + 1) 1-base 陣列排序 兩端都要 +1
sort(v.begin(), v.end()) 排序整個 vector/string 10.5 的 begin/end
sort(a, a + n, greater()) 由大到小 <algorithm> 就夠;舊標準寫 greater<int>(),型態要填對
sort(v.rbegin(), v.rend()) 由大到小的另一種寫法 只有容器有 rbeginrend,原生陣列沒有
sort(a, a + n, cmp) 用自訂規則排序 bool cmp(x, y)=「x 是否必在 y 前」
bool cmp(int x, int y) { return x > y; } 比較函式範本(由大到小) 相等必回傳 false:用 <> 別用 <=
stable_sort(v.begin(), v.end(), cmp) 穩定排序 相等元素保持原本相對順序
cnt[x]++; 再依序輸出 計數排序 值域小的非負整數專用;O(n + V)