C++自學精簡實踐教程

一、介紹

1.1 教程特點

  • 一篇文章從入門到就業
  • 有圖有真相,有測試用例,有作業;
  • 提供框架代碼,作業只需要代碼填空
  • 規范開發習慣,培養設計能力

1.2 參考書

  • 唯一參考書《C++ Primer 第5版》?
  • 參考書下載:
    • 藍奏云:C++_Primer_5th_Edition_English.pdf?

二、集成開發環境

三、 教程內容

1 基礎部分

難度系數(1):*

1.1 變量和基本類型

1.1.1?變量和基本類型(V)

1.1.2?引用類型 reference type(V)

1.1.3?賦值語句 assignment statement(變量與常量const)(V)

1.2 標準輸入輸出 I/O

1.2.1?輸出變量(cout與endl換行顯示)

1.2.2?輸入變量(cin 及字符串類型string)

1.2.3?名稱空間 name space std

1.2.4?getline 讀取一行內容

1.2.5?cin 扔給 getline 一個回車,程序炸了

1.2.6?輸出格式化 format control

1.3 表達式

1.3.1?算術表達式 expression

1.3.2?整除/ 與 求余% 運算

1.4 關系和邏輯運算符

1.4.1?關系運算符和邏輯運算符 bool

1.5 for循環語句

1.5.1?for循環語句

練習1?說一萬次我愛你(讓計算機去做舔狗)(A)

練習2?數列前n項和?(計算機暴力計算)(A)

練習3?打印九九乘法表(雙重循環)?(A)

練習4?計算圓周率π(隱式類型轉換)(高端大氣上檔次)(A)

1.6 if語句

1.6.1?if語句

練習?求一個數的絕對值

1.7 函數

1.7.1?函數function definition定義與調用call

1.7.2?棧變量的作用域

1.7.3?向函數傳遞參數(傳值、傳引用、傳const引用)

練習1?求兩個數的最大值max

練習2?交換兩個變量的值 swap?(A)

開發小助手:Visual Studio 2022 顯示函數參數類型

1.7.4?模板函數 template function

練習3?輸出正整數N各個位上的數字?(A)

練習4?求最大公約數?(A)

1.7.5?遞歸函數 recursive function :輸出正整數N各個位上的數字

練習5?數列前n項和(遞歸函數)

練習6?判斷一個數是否為素數(A)

Visual Studio 2022 調試Debug

10分鐘學會Visual Studio調試C++程序(CMake版)(完整版,推薦!)

1.8 動態內存

難度系數(4):* * * *

到這里難度開始突然增加。建議你遇到不清楚的,一定要多問我。這是加速學習的唯一捷徑!

1.8.1?堆heap棧stack與指針變量pointer(地址變量)

1.8.2?解引用 dereference operator

1.8.3?易混淆的符號&

1.8.4?向函數傳遞參數(傳地址)

1.8.5?堆數組 heap array

練習1?本科生平均學分績點GPA計算?(自頂向下設計+斷點調試) (A)(V)

練習2?冒泡排序 Bubble Sort(提取函數)(自頂向下設計+斷點調試) (A)(V)

2 標準庫STL基礎

難度系數(2):* *

這一部分難度一般,會用就行。你應該不會遇到太多問題。因為和其他語言也沒區別。

標準庫又叫標準模板庫STL(Standard Template Library),是C++語言的一部分。

主要由三部分組成,分別是容器,迭代器,算法。

2.1 數組

2.1.1?數組 vector

練習?for循環求數組元素的最大值?(A)

2.1.2?字符串 string

2.2 迭代器

2.2.1?auto 關鍵字?(C++11)

2.2.2?迭代器 iterator

2.2.3?范圍for循環(遍歷數組的三種方式) (C++11)

2.2.4?C++標準庫STL容器使用值語義

2.3 容器

2.3.1?鏈表 list?這個鏈接是官方示例教程,可以點開每一個子鏈接看里面的示例代碼。示例代碼都是最標準最典型的用法。我們應該學會從閱讀官方代碼中汲取營養,這個習慣應該盡早養成。

2.3.2?關聯容器(字典) map

2.3.3 集合?set

2.3.4?標準庫所有容器

2.4 lambda 表達式

2.4.1?lambda 表達式

2.5 算法

2.5.1?刪除容器的元素 remove erase

2.5.2?快速排序(std::sort)

2.5.3?標準庫所有算法

3 面向對象

難度系數(3):* * *

到了這里,類與對象是兩個新概念,你可能覺得有點奇怪。但是他們是面向對象編程語言最有威力的設施。幾乎沒有之一。

3.1類與對象

3.1.1?類 struct/class 與 對象 object(A)

3.1.2?類的成員函數 member function 與類成員的訪問控制(public private)

3.1.3?成員函數的聲明 declaration 與定義 definition 分開

3.1.4?對象之間賦值 object assignment(對應成員逐個賦值)

3.1.5?struct與class(唯一的區別是訪問控制)

練習?基于GPA排名計算本專業保研名單?(自頂向下設計+斷點調試) (A)(V)

3.1.6?類的const成員函數

3.1.7?堆對象數組

3.1.8?指針成員操作符 member operator

4 復制控制(深拷貝)

難度系數(5):* * * * *

這里要求你同時掌握堆內存管理和面向對象。難度陡然增加。復制控制是C++的靈魂。C在這里產生了大量Bug,動態內存管理直接讓Java產生的垃圾回收機制。

在C++里,你要用完全不同的方式獨自處理他們。

遇到問題一定記得第一時間問我。你可以認為我24小時都在等待你的問題。

4.1?構造函數constructor

4.2?構造函數與成員變量初始化

4.2 構造函數成員初始化列表(member initializer lists)(待實現)

4.3?拷貝構造函數(copy constructor )?(淺拷貝)

4.4?非平凡的類與復制控制 (深拷貝 deep control)

4.5?類的靜態成員變量 static member

Visual Studio 2022 調試Debug

3分鐘掌握C++調試神器-調用堆棧?(V)

4.6?繼承 inherit

4.7?多態 polymorphic 與虛函數 virtual function

5 輸入輸出I/O

難度系數(3):* * *

你之前肯定沒有用代碼操作過你本機電腦上的文件,這是一個操作性很強的章節。

有可能你創建了一個文件,也寫入了內容,但你可能都不知道它在你電腦的哪個文件夾里。是的,你會遇到的。

還是那句話,遇到任何問題不要懷疑自己,直接來找我。

5.1 文本文件讀寫

5.1.1?輸出變量的值到文件 write file

5.1.2?從文件讀取變量的值 read file

5.1.3?從文件里一次讀取一行 getline

練習1?讀取文本文件中的神秘數據?(A)

5.2 字符串流stringstream

5.2.1?從字符串流 stringstream 中讀取變量的值

6 操作符重載

6.1?輸出操作符重載 operator overloading 與友元函數 friend

6.2?輸入操作符重載 input operator overload

練習1?讀取文件中的學生信息并顯示?(自頂向下設計+斷點調試) (A)(V)

6.3?小于操作符重載與對象排序

7 C++小項目

項目1?學生通訊錄管理:文本文件增刪改查(C++版本)(自頂向下設計+斷點調試) (A)(V)

項目2?學生通訊錄管理:文本文件增刪改查(C 版本)(自頂向下設計+斷點調試) (A)(V)

項目3?貪吃蛇(控制臺版)?(A)

四、其他

1?相關C++學習網站和參考書下載

2?留學生輔導成績反饋

3?看看985高校的《數據結構》教材能差到什么程度

4?為什么我會感覺中國大學教材很爛?

5?中國的高校計算機教育存在哪些問題?

6?C++ 知名開源庫 整理

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/718039.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/718039.shtml
英文地址,請注明出處:http://en.pswp.cn/news/718039.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Acwing---3777. 磚塊

磚塊 1.題目2.基本思想3.代碼實現 1.題目 n 個磚塊排成一排,從左到右編號依次為 1~n。 每個磚塊要么是黑色的,要么是白色的。 現在你可以進行以下操作若干次(可以是 0 次): 選擇兩個相鄰的磚塊,反轉它…

STL——stack

目錄 stack stack都有哪些接口 模擬實現一個stack stack 1. stack是一種容器適配器,專門用在具有后進先出操作的上下文環境中,其刪除只能從容器的一端進行元素的插入與提取操作。 2. stack是作為容器適配器被實現的,容器適配器即…

數據分析-Pandas數據的畫圖設置

數據分析-Pandas數據的畫圖設置 數據分析和處理中,難免會遇到各種數據,那么數據呈現怎樣的規律呢?不管金融數據,風控數據,營銷數據等等,莫不如此。如何通過圖示展示數據的規律? 數據表&#x…

春招!啟動了

大家好,我是洋子。今年的春招很多企業已經開始招聘了,像美團今年繼續發力,24屆春招以及25屆暑期轉正實習一共招聘4000人。另外,阿里,京東,順豐等公司也已經開始春招,可以說招聘的號角已經正式吹…

GO語言學習筆記(與Java的比較學習)(十)

錯誤處理與測試 Go 沒有像 Java 和 .NET 那樣的 try/catch 異常機制:不能執行拋異常操作。但是有一套 defer-panic-and-recover 機制 錯誤處理 Go 有一個預先定義的 error 接口類型 type error interface {Error() string } errors 包中有一個 errorString 結構…

十二、類與聲明

類與聲明 什么是類? 前情總結 前面22講的課基本上就做了兩件事 學習C#的基本元素學習類的成員 析構函數: 當對象不再被引用的時候,就會被垃圾回收器gc,回收。而收回的過程當中,如果需要做什么事情,就放在…

遠程調用--Http Interface

遠程調用--Http Interface 前言1、導入依賴2、定義接口3 創建代理&測試4、創建成配置變量 前言 這個功能是spring boot6提供的新功能,spring允許我們通過自定義接口的方式,給任意位置發送http請求,實現遠程調用,可以用來簡化…

已解決org.springframework.dao.DataRetrievalFailureException數據檢索失敗異常的正確解決方法,親測有效!!!

已解決org.springframework.dao.DataRetrievalFailureException數據檢索失敗異常的正確解決方法,親測有效!!! 目錄 問題分析 出現問題的場景 報錯原因 解決思路 解決方法 總結 在使用Spring Framework進行數據庫操作時&…

關于硅金屬電阻器?

EAK金屬硅電阻器類似于陶瓷復合電阻器,在脈沖負載方面具有優勢,需要高峰值功率或高電壓與低電感(如預充電電路)的組合。硅金屬電阻器具有更高的連續額定溫度,為 350C,而陶瓷電阻器為 250C。這種擴展的溫度范…

[藍橋杯 2023 省 B] 冶煉金屬

P9240 [藍橋杯 2023 省 B] 冶煉金屬 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) 參考題解: #C3150——藍橋杯2023年第十四屆省賽真題-冶煉金屬(分塊)-Dotcpp編程社區 https://www.bilibili.com/video/BV1wc411x7KU/?spm_id_from333.1007.top_right_bar_windo…

RT-Thread操作系統 串口DMA接收時數據被拆分多包

一、問題現象 在使用RT Thread操作系統,串口DMA接收數據時,通過log打印發現,例如GPS NEMA數據一包數據量較大或者時,接收到的數據被拆分多包處理; 二、問題解決方案 修改DMA驅動程序 在drivers/drv_usart.c中屏蔽如…

板子合集1.0

版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。 原文鏈接:https://blog.csdn.net/JK01WYX/ 文章目錄 1.快速冪板子2.gcd得最大公約數3.堆優化的dijkstra板子4.線段樹1板子 區間加線段…

中綴表達式轉換逆波蘭式(后綴表達式)

算法思路來自于王道的數據結構 #include <iostream> #include <stack> #include <map>using namespace std; string eq; stack<char> op; string rst ""; map<char, int> dict;// 獲取優先級 int getPrio(char op) {if (op )return …

【Dubbo專欄 01 】深入探索:dubbo的架構是什么?

文章目錄 Dubbo&#xff1a;深入解析分布式服務框架的核心概念與實現01 Dubbo簡介02 Dubbo核心概念2.1 服務提供者&#xff08;Provider&#xff09;2.2 服務消費者&#xff08;Consumer&#xff09;2.3 注冊中心&#xff08;Registry&#xff09;2.4 負載均衡&#xff08;Load…

如何對用OpenCV開發的API進行測試 (Google Test 版本)

如何對用OpenCV開發的API進行測試 &#xff08;Google Test 版本&#xff09; 如何對用OpenCV開發的API進行測試斷言介紹斷言基礎的斷言數值比較字符串比較 如何對用OpenCV開發的API進行測試 假設你想測試一個使用OpenCV開發的圖像處理API&#xff0c;例如一個圖像濾波函數。以…

SWC Runnable

runnable概念 runnable是編寫應用程序行為邏輯的 SWC 的一部分。Runnable 類似于 C 中的函數,類似RTOS中的task,程序運行的實體,swc的靈魂。在 AUTOSAR 中,我們在配置期間在 SWC 中創建 Runnable,并且 在 SWC 的相應源文件中生成Runnable 或函數骨架。骨架函數的名稱與我…

【硬件工程師面經整理15_低通/高通/帶通濾波器】

低通/高通/帶通濾波器 1.1 低通濾波器1.2 高通濾波器1.3 帶通濾波器 1.1 低通濾波器 【定義】電感阻止高頻信號通過而允許低頻信號通過&#xff0c;電容的特性卻相反。信號能夠通過電感的濾波器、或者通過電容連接到地的濾波器對于低頻信號的衰減要比高頻信號小&#xff0c;稱…

第二篇【傳奇開心果系列】Python的自動化辦公庫技術點案例示例:深度解讀Pandas金融數據分析

傳奇開心果博文系列 系列博文目錄Python的自動化辦公庫技術點案例示例系列 博文目錄前言一、Pandas 在金融數據分析中的常見用途和功能介紹二、金融數據清洗和準備示例代碼三、金融數據索引和選擇示例代碼四、金融數據時間序列分析示例代碼五、金融數據可視化示例代碼六、金融數…

軟考高級:DNS欺騙相關知識和例題

一、AI 解析 DNS欺騙&#xff0c;又稱DNS緩存投毒&#xff0c;是一種網絡攻擊技術。攻擊者通過篡改DNS服務器的緩存數據&#xff0c;使得DNS查詢的結果指向一個惡意的IP地址&#xff0c;從而引導用戶訪問到釣魚網站或者惡意軟件下載頁面&#xff0c;對用戶的信息安全造成威脅。…

后臺組件-IO定義

<groupId>org.qlm</groupId><artifactId>qlm-io</artifactId><version>1.0-SNAPSHOT</version> 該組件定義了前端和后臺微服務直接通訊結構以及返回值定義。 RequestInfo&#xff1a;請求結構 ResponseResult&#xff1a;非分頁的返回結…