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

本單元語法速查表

語法 用途 範例
#include <bits/stdc++.h> 萬用標頭檔(GNU 專屬) 取代整串 include
std::coutusing std::cin; 不攤開整個 std 的寫法 讀別人的程式碼一定會遇到;:: 表示「裡面的」
auto x = 運算式; 型態讓編譯器推(必須有初始值) auto it = v.begin();
int &r = a; 參考:幫變數取別名 r 就是改 a;綁定後不能換對象
void f(const vector<int> &v) const 參考參數:不複製、不可改 大容器進函式的慣用式
for (int x : v) range-based for:掃過全部元素 陣列、vector、string 通用
for (auto &x : v) 要寫入元素:加 & for (int &x : v) cin >> x;
auto [a, b] = p; 結構化綁定:拆 pair 取代 p.firstp.second
for (auto &[x, y] : v) vector<pair> 的組合技 讀入加 &,只讀可不加
a ? b : c 條件運算子:兩個值選一個 int mx = (x > y ? x : y);
A, B 逗號運算子:結果是 B for (...; ...; i++, j--);其他場合能免則免
using ll = long long; 型態別名 using pii = pair<int, int>;
[](int x, int y) { return x > y; } (延伸)lambda:就地定義小函式 塞進 sort 第三個參數
[&](...) { ... } (延伸)capture:抓外面的變數 比較依據不用開全域
#define SZ(x) (int)((x).size()) (延伸)巨集:編譯前文本取代 括號包好包滿
#define all(x) (x).begin(), (x).end() (延伸)最常見的競程巨集 sort(all(v));連逗號都是貼進去的文字
ios::sync_with_stdio(false); cin.tie(nullptr); cin/cout 加速開場白 寫在 main 最開頭;之後不可混用 scanf。ios_base::NULL0 是同一組的其他長相
'\n' 換行(不清緩衝區) 大量輸出時比 endl 快數十倍