想像一下…

你聽老師的話,開始讀高手的程式碼——也許是比賽的官方解答,也許是排行榜第一名的提交。滿懷期待點開,看到的是這樣的東西:

#include <bits/stdc++.h>
using namespace std;
#define SZ(x) (int)((x).size())
using pii = pair<int, int>;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n;
    cin >> n;
    vector<pii> v(n);
    for (auto &[a, b] : v) cin >> a >> b;
    sort(v.begin(), v.end());
    for (auto [a, b] : v) cout << a << ' ' << b << '\n';
    return 0;
}

明明每個字母都認識,合起來卻像另一種語言:bits/stdc++.h 是哪來的標頭檔?#defineusing pii 在幹嘛?auto 是什麼型態?[a, b] 這對中括號又是怎麼回事?開頭那兩行 synctie 更是完全沒見過。

其實這份程式做的事你全部都會:讀入 n 對數字、排序、輸出——第十、十一單元的老朋友。看不懂的部分沒有半點新演算法,全是語法糖與工程知識:同一件事的更省力寫法、讓程式跑快一點的開關、少打幾個字的縮寫。高手用它們,是因為比賽時每一秒都珍貴。

本單元就是這份程式的解碼手冊。十個小節,每一節都是「你已經會的事,有更省力的寫法」——12.1 拆萬用標頭檔、12.2auto12.5[a, b]12.10 拆那兩行加速開關。學完之後回頭看這份程式,每一行你都讀得懂;更重要的是,你可以挑幾個真正值得用的收進自己的工具箱——不必全用,但至少不再被它們擋在別人的程式碼外面。