tags: note C++

C++筆記

這是我大一上學期平日練習和閱讀 C++ 所寫下來的東西,課本主要是看這本:

語言技術:C++ Gossip

這份筆記目前已經沒有在維護了,但不用擔心會有過時的問題,內容當時主要是圍繞在 C++11 撰寫的。 不知道為什麼這份的觸及好像有點高,所以這份筆記就還是先把它留著了,也當作紀念哈哈

本人目前在中央大學數學系計中擔任網管一職,後來有重新寫了一份新的系列文,當作當時培訓新人的講義:

也有上傳到 github 和我自己的 Blog 上:

這三個地方基本上會先更新 hackmd,確認沒問題後再同步到 github 與我的 Blog

礦坑系列的教學比較詳細,會時不時的將標準內的定義引用出來給大家看,詳細內容可以到礦坑系列的序看

但當時教下來發現因為內容寫的比較嚴謹,導致其實有點太過艱澀和枯燥,同事有點聽不太懂,所以也許先讀讀這邊的舊文也是個不錯的選項

待我之後有空,也許也會再重新回來把這裡的舊文整理一下,順便合進礦坑系列的教學中,調整一下礦坑系列的難度

總之翻到這篇的人可以兩邊都看看,取自己所需吧!

有任何問題想問都可以加我 Discord 聯絡:mes_0903,也可以直接丟我 FB,我有空就會回復

Last edited on 2024/04/19

基礎概論

變數、邏輯符號、基本語法

  • 變數型態
  • 邏輯符號
  • 常用語法
    • cout
    • cin
    • switch
    • if,else if
    • while迴圈
    • for迴圈及其變形

陣列、指標 與 物件別名 (Reference 參考)

  • 陣列

    • 一維陣列
    • 二維陣列
  • 指標

    • 指標的運算
    • 指標與陣列
    • 指標的指標
    • new 與 delete (動態配置)
  • 物件別名 (Reference 參考) (待更新)

    • Reference
    • Rvalue Reference

函式 Function

  • 語法
  • 引數(Argument) 與 參數(Parameter)
  • 回傳值型態
  • 不定長度引數
  • 函式模版 (template)
  • 模板與參考(reference)
  • 可變參數模版
  • Decltype 與 尾端傳回型態 (待更新)
  • 函式指標
  • Lambda運算式 (待更新)
  • 一級函式、高階函式與 Algorithm

Class

  • 宣告 Class
  • 建構子
  • const 、 mutable 與 static
  • 巢狀、區域、匿名類別、friend
  • 運算子重載
  • 自訂型態轉換
  • 函子
  • 類別模版
  • 成員指標
  • 解構式、複製與移動
  • 智慧型指標
    • auto_ptr
    • unique_ptr
    • shared_ptr
    • weak_ptr
  • 列舉 (enum)
  • union
  • 位元欄位

物件導向

  • 繼承共同行為
  • 遮蔽父類方法
  • 虛擬函式
    • 虛擬函式
    • 純虛擬函式
  • 模版與繼承
  • RTTI
  • 繼承 ── 複習與補充
  • 多重繼承
  • 多重繼承的建構
  • 虛擬繼承
  • 多重繼承的複雜

STL容器

  • Vector
  • List
  • Deque
  • Stack
  • Queue
  • Array
  • pair
  • Map

排序法與時間複雜度

  • 時間複雜度 O
  • 常見的時間複雜度與演算法
    • O(1)
    • O(n)
    • O(logn) —— 二分搜尋法
    • O(n²) —— 選擇排序法(Selection Sort)
    • O(n²) —— 插入排序法
    • O(n logn) —— 快速排序法(Quick Sort)
    • O(n logn) —— 合併排序法(Merge Sort) (待補)
    • O(2n) —— 費氏數列遞迴 (待補)

I/O 資料讀寫

  • I/O 格式控制器
  • I/O格式旗標
  • 文字檔案 I/O
  • 二進位檔案 I/O


參考資料


1. 語言技術:C++ Gossip (課本)

2. Codecademy

3. C++入門教學

4. 初學者學演算法

5. 埃伯 C++教學

6. C/C++ - Vector (STL) 用法與心得完全攻略

7. [C++] STL 容器 (一) - 基本介紹

8. 資料結構筆記(一):演算法、時間複雜度、空間複雜度

9. 淺談二分搜尋法

10. Comparison Sort: Merge Sort(合併排序法)

11. sizeof獲取陣列長度

12. 徐熊健@資料結構與演算法

13. [VSCode] Visual Studio Code 執行 C++ (1) - 安裝 VSCode + MinGW

14. Comparison Sort: Quick Sort(快速排序法)

15. SEIZURE WARNING 50+ Sorts, Visualized - Bar Graph

16. C++11 Lambda Expression 語法教學與範例

17. 看完這個你還不理解右值引用和移動構造你就可以來咬我(上)

18. 「你所不知道的 C 語言」系列講座

19. Value categories

20. decltype specifier

21. 使用 clang-format 對程式碼進行排版

22. TJSW的網站