C++ Primer → C++ 標準程序庫 → Effective C++ → Effective STL → 深度探索 C++ 對象模型
夯實基礎、掌握標準庫、內化最佳實踐、精通 STL、洞悉對象模型——這是從入門到精通的黃金路徑。
隨機生成 100 個 0~99 整數,統計個位數字分布。關鍵:循環變量初值、終值、累加器初值。
gcd(m,n):m%n=r; while(r){ m=n; n=r; r=m%n; } return n;
lcm = m*n/gcd。
試除法至 sqrt(m)。封裝為 int prime(int m) 返回 1/0。
偶數 n>=6 分解為兩素數之和。從 3 開始枚舉 n1,檢查 n1 和 n-n1 是否均為素數。
O(n²)。O(n²)。O(n) 空間,O(n log n) 時間。O(n)。O(log n)。定位插入位置 p,後移元素騰出空間,插入 x。
C[i][j] = Σ A[i][k]*B[k][j]。a[i][j] ↔ a[j][i](僅遍歷上/下三角)。牛頓迭代:x₁ = 0.5*(x₀ + a/x₀),直到 |x₁-x₀| < ε。
連續除基取餘,逆序輸出字符(0-9, A-F)。
三層循環枚舉 5元/1元/5角 組合滿足 100張=100元。
兩要素:終止條件 + 遞歸步驟向終止條件收斂。
例:int fac(int n){ return n==1?1:n*fac(n-1); }
實現靠棧:每層調用壓棧,終止後彈出回溯。
printf:%g 自適應精度,%% 輸出百分號,返回輸出字符數(含轉義字符)。scanf:%f 讀 float,%lf 讀 double;可限寬度(%3c),不可限精度。getchar/putchar:行緩衝導致輸入字符串後逐字符輸出;單字符即時交互需系統中斷支持。局部變量遮蔽同名全局變量(需 :: 訪問全局)。嵌套作用域層層遮蔽。
編譯器構建符號表:名字、類型、存儲類別、作用域、可視性、存儲分配信息。
靜態存儲區(全局/靜態局部)vs 動態存儲區(棧/堆)。
static 全局變量限制文件作用域;static 局部變量延長生命周期;static 函數內部鏈接。