###### tags: `note` `C++` # <div id = animation_title>C++筆記</div> 這是我大一上學期平日練習和閱讀 C++ 所寫下來的東西,課本主要是看這本: **<a href="https://openhome.cc/Gossip/CppGossip/index.html" class="redlink">語言技術:C++ Gossip </a>** 這份筆記目前已經沒有在維護了,但不用擔心會有過時的問題,內容當時主要是圍繞在 C++11 撰寫的。 不知道為什麼這份的觸及好像有點高,所以這份筆記就還是先把它留著了,也當作紀念哈哈 本人目前在中央大學數學系計中擔任網管一職,後來有重新寫了一份新的系列文,當作當時培訓新人的講義: - [C++ 礦坑系列教學](https://hackmd.io/@Mes/Cpp_Miner/https%3A%2F%2Fhackmd.io%2F%40Mes%2FPreface) 也有上傳到 github 和我自己的 Blog 上: - [Cpp-Miner github](https://github.com/Mes0903/Cpp-Miner) - [Cpp-Miner on Mes Blog](https://mes0903.github.io/categories/C-Miner/) 這三個地方基本上會先更新 hackmd,確認沒問題後再同步到 github 與我的 Blog 礦坑系列的教學比較詳細,會時不時的將標準內的定義引用出來給大家看,詳細內容可以到礦坑系列的序看 但當時教下來發現因為內容寫的比較嚴謹,導致其實有點太過艱澀和枯燥,同事有點聽不太懂,所以也許先讀讀這邊的舊文也是個不錯的選項 待我之後有空,也許也會再重新回來把這裡的舊文整理一下,順便合進礦坑系列的教學中,調整一下礦坑系列的難度 總之翻到這篇的人可以兩邊都看看,取自己所需吧! 有任何問題想問都可以加我 Discord 聯絡:`mes_0903`,也可以直接丟我 [FB](https://www.facebook.com/Mes0903/),我有空就會回復 > Last edited on 2024/04/19 # 基礎概論 ## <a href="https://hackmd.io/3v-i3fGzSwWtNtGiBiJphg?both" id="animation_title">變數、邏輯符號、基本語法 </a> + 變數型態 + 邏輯符號 + 常用語法 + cout + cin + switch + if,else if + while迴圈 + for迴圈及其變形 ## <a href="https://hackmd.io/UojBWFM1RCS4vrv656i6IQ" id="animation_title">陣列、指標 與 物件別名 (Reference 參考)</a> + 陣列 + 一維陣列 + 二維陣列 + 指標 + 指標的運算 + 指標與陣列 + 指標的指標 + new 與 delete (動態配置) + 物件別名 (Reference 參考) (待更新) + Reference + Rvalue Reference ## <a href = "https://hackmd.io/U2U3exOWSkioXerWmerKbw" id="animation_title">函式 Function</a> + 語法 + 引數(Argument) 與 參數(Parameter) + 回傳值型態 + 不定長度引數 + 函式模版 (template) + 模板與參考(reference) + 可變參數模版 + Decltype 與 尾端傳回型態 (待更新) + 函式指標 + Lambda運算式 (待更新) + 一級函式、高階函式與 Algorithm ## <a href = "https://hackmd.io/pJO-L-rXQluddkagZCbpgQ" id="animation_title">Class</a> + 宣告 Class + 建構子 + const 、 mutable 與 static + 巢狀、區域、匿名類別、friend + 運算子重載 + 自訂型態轉換 + 函子 + 類別模版 + 成員指標 + 解構式、複製與移動 + 智慧型指標 + auto_ptr + unique_ptr + shared_ptr + weak_ptr + 列舉 (enum) + union + 位元欄位 ## <a href = "https://hackmd.io/QcDy5W6RQhmghpJlv8NO5g" id="animation_title">物件導向</a> + 繼承共同行為 + 遮蔽父類方法 + 虛擬函式 + 虛擬函式 + 純虛擬函式 + 模版與繼承 + RTTI + 繼承 ── 複習與補充 + 多重繼承 + 多重繼承的建構 + 虛擬繼承 + 多重繼承的複雜 ## <a href = "https://hackmd.io/jmNCb3H8SVKxdoDYsjU0pA" id="animation_title">STL容器</a> + Vector + List + Deque + Stack + Queue + Array + pair + Map ## <a href = "https://hackmd.io/SaoFkqu5R6qCzmZsBWiQdA" id="animation_title">排序法與時間複雜度</a> + 時間複雜度 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) —— 費氏數列遞迴 (待補) ## <a href = "https://hackmd.io/6ZCGDBXRSEa4oWteP5Q8vw" id="animation_title">I/O 資料讀寫</a> + I/O 格式控制器 + I/O格式旗標 + 文字檔案 I/O + 二進位檔案 I/O # <br> # 參考資料 <br> **<a href="https://openhome.cc/Gossip/CppGossip/index.html" class="redlink">1. 語言技術:C++ Gossip </a> (課本)** **<a href="https://www.codecademy.com/learn/learn-c-plus-plus" class="redlink">2. Codecademy</a>** **<a href="https://www.csie.ntu.edu.tw/~b98902112/cpp_and_algo/index.html" class="redlink">3. C++入門教學</a>** **<a href="https://medium.com/appworks-school/%E5%88%9D%E5%AD%B8%E8%80%85%E5%AD%B8%E6%BC%94%E7%AE%97%E6%B3%95-%E5%BE%9E%E6%99%82%E9%96%93%E8%A4%87%E9%9B%9C%E5%BA%A6%E8%AA%8D%E8%AD%98%E5%B8%B8%E8%A6%8B%E6%BC%94%E7%AE%97%E6%B3%95-%E4%B8%80-b46fece65ba5" class="redlink">4. 初學者學演算法</a>** **<a href="https://crmne0707.pixnet.net/blog/post/317892894-c++-%E6%95%99%E5%AD%B8" class="redlink">5. 埃伯 C++教學 </a>** **<a href="https://mropengate.blogspot.com/2015/07/cc-vector-stl.html" class="redlink">6. C/C++ - Vector (STL) 用法與心得完全攻略</a>** **<a href="https://larry850806.github.io/2016/06/06/STL1/" class="redlink">7. [C++] STL 容器 (一) - 基本介紹 </a>** **<a href="https://noob.tw/data-structure/" class="redlink">8. 資料結構筆記(一):演算法、時間複雜度、空間複雜度 </a>** **<a href="https://blog.techbridge.cc/2016/09/24/binary-search-introduction/" class="redlink">9. 淺談二分搜尋法 </a>** **<a href="https://alrightchiu.github.io/SecondRound/comparison-sort-merge-sorthe-bing-pai-xu-fa.html" class="redlink">10. Comparison Sort: Merge Sort(合併排序法)</a>** **<a href="https://www.itread01.com/content/1546716608.html" class="redlink">11. sizeof獲取陣列長度</a>** **<a href="https://sites.google.com/site/sjdsalg/home" class="redlink">12. 徐熊健@資料結構與演算法</a>** **<a href="https://ithelp.ithome.com.tw/articles/10190235" class="redlink">13. [VSCode] Visual Studio Code 執行 C++ (1) - 安裝 VSCode + MinGW</a>** **<a href="https://alrightchiu.github.io/SecondRound/comparison-sort-quick-sortkuai-su-pai-xu-fa.html" class="redlink">14. Comparison Sort: Quick Sort(快速排序法)</a>** **<a href="https://www.youtube.com/watch?v=xoR-1KwQh2k&ab_channel=Musicombo" class="redlink">15. *SEIZURE WARNING* 50+ Sorts, Visualized - Bar Graph</a>** **<a href="https://blog.gtwang.org/programming/lambda-expression-in-c11/" class="redlink">16. C++11 Lambda Expression 語法教學與範例</a>** **<a href="https://blog.csdn.net/yapian8/article/details/42341307" class="redlink">17. 看完這個你還不理解右值引用和移動構造你就可以來咬我(上)</a>** **<a href="https://hackmd.io/@sysprog/c-programming" class="redlink">18. 「你所不知道的 C 語言」系列講座</a>** **<a href="https://en.cppreference.com/w/cpp/language/value_category" class="redlink">19. Value categories</a>** **<a href="https://en.cppreference.com/w/cpp/language/decltype" class="redlink">20. decltype specifier</a>** **<a href="https://hsins.me/blog/2019/05/27/format-source-code-with-clang-format/" class="redlink">21. 使用 clang-format 對程式碼進行排版</a>** **<a href="https://medium.com/@tjsw" class="redlink">22. TJSW的網站</a>** </center> <style> .green { color:#29E5A9; } .brown { color:#990000; } .pink { color:#DD9FBD; } .red { color:#E71B18 ; } .blue { color:#0b5394; } .purple { color:#AC9FDD; } @-webkit-keyframes A { 0% { color:#C10066;} 10% { color: #CC0000;} 20% { color: #E63F00; } 30% { color:#EE7700; } 40% { color: #DDAA00; } 50% { color:#EEEE00;} 60% { color: #99DD00;} 70% { color:#66DD00;} 80% { color: #00DDDD;} 90% { color: #0044BB;} 100% { color: #A500CC;} } #animation_title{ animation: A 3s ease 0s infinite alternate; -webkit-animation: A 3s ease 0s infinite alternate; } a.redlink { color:#DD6295; } a.redlink:link { color:#DD6295; text-decoration:none; } a.redlink:visiteid { color:#DB1859; text-decoration:none; } a.redlink:hover { color:#19CABC; text-decoration:none; } a.redlink:active { color:#000000; text-decoration:underline; background:#FFFFFF; } a.yellowlink { color:#E5E048 } a.yellowlink:link { color:#E5E048; text-decoration:none; } a.yellowlink:visiteid { color:#E5E048; text-decoration:none; } a.yellowlink:hover { color:#97E044; text-decoration:none; } a.yellowlink:active { color:#000000; text-decoration:underline; background:#FFFFFF; } </style> <style type="text/css"> h1 { font-size:; color:#0b5394; } h2 { font-size:; color:#0b5394; } p { font-size:; color:; } h3 { font-size: ; color:#990000; } h4 { font-size:; color:#990000; } </style> <style> html, body, .ui-content { background-color: #333; color: #ddd; } body > .ui-infobar { display: none; } .ui-view-area > .ui-infobar { display: block; } .markdown-body h1, .markdown-body h2, .markdown-body h3, .markdown-body h4, .markdown-body h5, .markdown-body h6 { color: #ddd; } .markdown-body h1, .markdown-body h2 { border-bottom-color: #ffffff69; } .markdown-body h1 .octicon-link, .markdown-body h2 .octicon-link, .markdown-body h3 .octicon-link, .markdown-body h4 .octicon-link, .markdown-body h5 .octicon-link, .markdown-body h6 .octicon-link { color: #fff; } .markdown-body img { background-color: transparent; } .ui-toc-dropdown .nav>.active:focus>a, .ui-toc-dropdown .nav>.active:hover>a, .ui-toc-dropdown .nav>.active>a { color: white; border-left: 2px solid white; } .expand-toggle:hover, .expand-toggle:focus, .back-to-top:hover, .back-to-top:focus, .go-to-bottom:hover, .go-to-bottom:focus { color: white; } .ui-toc-dropdown { background-color: #333; } .ui-toc-label.btn { background-color: #191919; color: white; } .ui-toc-dropdown .nav>li>a:focus, .ui-toc-dropdown .nav>li>a:hover { color: white; border-left: 1px solid white; } .markdown-body blockquote { color: #bcbcbc; } .markdown-body table tr { background-color: #5f5f5f; } .markdown-body table tr:nth-child(2n) { background-color: #4f4f4f; } .markdown-body code, .markdown-body tt { color: #eee; background-color: rgba(230, 230, 230, 0.36); } a, .open-files-container li.selected a { color: #5EB7E0; } </style>