C++ 向量容器 capacity 與 size 差異詳解
核心概念 成員函式含義典型值變化 size()當前**實際持有**的元素個數push_back +1,pop_back -1,resize 直接設定 capa
C 語言輸入函數大比拼:scanf、gets、getchar 緩衝區陷阱與最佳實踐
三大函數核心差異 函數讀取單位結束條件緩衝區處理安全性 scanf格式化字段匹配失敗 / EOF留下換行符低(緩衝區溢出風險) gets整行換行符 /
C 語言未定義行為進階:返回局部變量地址、參數求值順序、副作用邊界
案例 1:返回局部變量地址——懸空指針 int* inc(int val) { int a = val; a++; return &a
希爾排序:從插入排序到子序列分組的間距序列藝術
核心思想 希爾排序是插入排序的改進版: 插入排序對基本有序數組極快(接近 O(n)),但對逆序數組為 O(n²)。 希爾排序先按間距 (gap) 將數組分為若
rand() 返回值範圍深度解析:RAND_MAX、均勻分布與跨平台差異
標準規定(C99/C11) 原型:int rand(void); 返回範圍:[0, RAND_MAX],包含兩端。 RAND_MAX:宏常量,至少 32767
C 語言經典面試陷阱解析:字串常量修改、argv 改名、副作用與序列點
陷阱 1:修改字串常量導致崩潰 char *ptr = Linux; *ptr = T; // 段錯誤!Linux 存放在唯讀段 printf(%s, pt
尋找二叉搜索樹中節點的後繼節點:三種場景完整解析
定義 在 BST 中,節點 x 的後繼節點是中序遍歷中緊隨 x 之後的節點,即值大於 x 的最小節點。 三種情況 情況 1:節點有右子樹 後繼節點是右子樹中
二叉樹轉雙向鏈表:中序遍歷就地轉換的三種實現
問題定義 將一棵二叉搜索樹(或普通二叉樹)就地轉換為排序雙向鏈表: 左指針 → 前驅(prev) 右指針 → 後繼(next) 中序遍歷順序即鏈表順序 返回鏈
《12 個有趣的 C 語言問答》評析(三):未定義行為與標準庫陷阱
本系列第三篇,聚焦 C 標準中最隱蔽也最危險的未定義行為(UB)、標準庫函數誤用、指針運算邊界等深水區問題。原文不僅示範錯誤代碼,連解釋都包含技術謬誤。 第
Valgrind Memcheck:C/C++ 內存錯誤檢測權威指南
Valgrind 是 Linux 下最強大的動態分析工具套件,Memcheck 是其核心組件,專門檢測內存錯誤。本文提供從安裝到實戰的完整指南。 安裝與基本用
《12 個有趣的 C 語言問答》評析(二):內存管理陷阱與標準合規
延續上篇,本文聚焦內存分配、釋放、錯誤處理等工程核心環節。原文示例違反 C 標準、引入未定義行為、忽略資源洩露,是典型的「能跑但不能用」的代碼。 第 3 題:
決策表快速排序:屬性序下的粗糙集約簡算法實現
決策表排序是粗糙集理論中屬性約簡的關鍵預處理步驟。本文實現了基於屬性序的快速排序算法,源自《計算機學報》相關研究,在 UCI 數據集上展現優異性能。 問題背景
《12 個有趣的 C 語言問答》評析(一):識別技術毒素,建立正確認知
網絡上流傳極廣的《12 個有趣的 C 語言問答》被許多技術網站轉載,甚至被視為面試寶典。實則這是一篇充滿誤導、錯誤示範甚至危險代碼模式的「垃圾文」。本系列將逐題
快速排序:從基礎分區到三向切分的完整演進
快速排序是實踐中最快的通用排序算法,平均 O(n log n)、原地排序、緩存友好。本文從經典 Hoare 分區演進到三向切分,解決重複鍵值性能退化問題。 核
優先隊列:數據結構原理與 C++ STL 實戰
優先隊列是特殊的隊列,元素按優先級出隊而非先進先出。它是堆(Heap)的經典應用,廣泛用於任務調度、最短路徑、數據流處理等場景。 核心特性 頂部元素:始