本單元語法速查表
| 語法 | 用途 | 範例 |
|---|---|---|
#include <bits/stdc++.h> |
萬用標頭檔(GNU 專屬) | 取代整串 include |
std::cout/using 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.first、p.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::/NULL/0 是同一組的其他長相 |
'\n' |
換行(不清緩衝區) | 大量輸出時比 endl 快數十倍 |