C++ 模擬實作 std::list:雙向鏈表與迭代器完整教學
設計目標 從零實作雙向鏈表容器,支援雙向迭代器、常數迭代器、標準容器介面(push_back、push_front、insert、erase、begin/end
C++ 動態記憶體管理:new/delete 與 new[]/delete[] 深度解析
為何 C++ 需要 new/delete? C 語言 malloc/free 僅管理原始記憶體,不呼叫建構函數/解構函數。C++ 物件擁有建構/解構邏輯(RAI
C 語言 OpenSSL DES 加密實作完整指南
歷史背景:從 DES 到 AES DES (Data Encryption Standard) 曾是對稱加密霸主,1977 年成為美國聯邦標準。56-bit 有
C 語言函數回傳字串的四種經典模式完整解析
核心問題:區域變數生命週期 C 語言函數不能直接回傳區域陣列或區域指標指向的記憶體,因為區域變數在函數返回時生命週期結束,記憶體被回收,回傳的指標成為野指標,解
C 語言 OpenSSL AES 加密完整實戰指南
前言:為何選擇 AES? AES (Advanced Encryption Standard) 是當前最廣泛採用的對稱加密標準,取代了不再安全的 DES。Ope
C 語言鏈表歸併排序:有序鏈表合併去重完整實作
問題描述 給定兩個無頭節點的單鏈表 ha、hb,節點含資料域 data 與鏈域 next。兩表資料均按遞增序排列。要求將 hb 併入 ha,合併後 ha 仍保持
C 語言前綴與後綴自增自減運算子深度解析
核心差異:值與副作用的時序 ++a(前綴)與 a++(後綴)最終結果相同(a 增加 1),但運算式的值與副作用發生時機不同: 前綴 ++a:先增後用 → 運算
C++ 模板實作單向鏈表 List 完整教學
設計目標 使用 C++ 模板實作一個基本的單向鏈表容器,支援尾部新增、指定位置刪除、索引存取、大小查詢等核心操作,理解鏈表節點管理、指標操作與模板泛型程式設計。
C++ 動態陣列實作:自動擴容的泛型 Array 類別完整教學
設計目標 實作一個具備自動擴容、泛型支援、基本增刪查功能的動態陣列類別,模擬 std::vector 核心行為,深入理解動態記憶體管理、複製語意與擴容策略。
C++ 鏈表實作堆疊:從基本版到泛型模板完整教學
為何手寫 Stack? C++ STL 提供 std::stack 功能強大且經過嚴格測試。但親手實作鏈表版堆疊,能深入理解 LIFO 結構、指標操作、記憶體管
資料結構:多維陣列順序儲存與映射函數完整解析
前言:為何需要順序儲存? 多維陣列在邏輯上是多維度的,但實體記憶體是線性的一維空間。編譯器必須將多維索引 (i₁, i₂, ..., iₙ) 映射為一維位移 o
C 語言 free() 函數深度解析與安全釋放實踐
核心概念:free() 的本質與配對原則 free() 的唯一職責是釋放先前由 malloc()、calloc() 或 realloc() 分配的堆疊記憶體,它
Linux 環境下 g++ 編譯與靜態/動態庫建立完整指南
前言 在 Windows 環境下,開發者習慣使用 Visual Studio 等 IDE 管理 C++ 專案,對靜態庫(.lib)與動態庫(.dll)的產生與使
C++ Placement New 深度解析:指定內存位置構造對象的藝術與陷阱
什麼是 Placement New? 標準 `new` 兩步:分配內存 + 構造對象。Placement New **分離** 這兩步: void* buf =
C 語言條件編譯完全指南:#if/#ifdef/#ifndef 實戰與 CMake 整合
為什麼需要條件編譯? 跨平台、調試開關、功能裁剪。核心優勢:**編譯期決定,目標代碼不包含未選分支**,零運行開銷。 三大語法形式 1. #if / #eli
數據結構基石:多維數組 Array 完整實現與原理解析
ADT 定義:數組抽象數據類型 Status InitArray(int dim, ...) // 構造 dim 維數組,後續參數為各維長度 Stat
C 語言字串前綴/後綴判斷:startsWith / endsWith 實作與邊界處理
前言 C 標準庫缺乏字串前綴/後綴判斷函式。本文提供健壯、可重用的 startsWith / endsWith 實作,完整處理空指標、空字串、長度不足、編碼安全