學習C++應該做點什么項目

C++作為一門底層可操作性很強的語言,廣泛應用于游戲開發、工業和追求性能、速度的應用。

比如騰訊,無論游戲,還是微信,整個鵝廠后臺幾乎都是 C++ 開發,對 C++ 開發者的需求非常大

但問題是C++入門和精通都比較困難,所以市面上的優秀人才很少。

因此網上有句話說“C++就是入職大廠的敲門磚!

經常會有人問我:

C++應該做些什么項目?

應該學習什么項目來提高自己的C++水平?

今天給大家推薦三個我認為不錯的項目

(一)手擼STL

STL是C++的重要組件,C++開發幾乎沒有不使用STL的,然而光會用是不夠的,還需要明白它的實現原理。

智能指針 vector array stack queue deque map set string 這些常用的數據結構最好自己都實現一遍。

水平高的可以直接參考gcc源碼(https://github.com/gcc-mirror/gcc)

(二)ThreadPool

一個簡單的 C++11 線程池實現,只有一個頭文件,代碼加起來不到 100 行。

GitHub 地址:https://github.com/progschj/ThreadPool

(三)sudoku

C++ 實現的命令行數獨游戲。600 余行代碼,初學者也可以輕松學習。

GitHub 地址:https://github.com/mayerui/sudoku

(四)sTinytetris

Tinytetris 是一個用 C++ 編寫的終端版俄羅斯方塊游戲。它提供了兩個版本的源碼,分為注釋版和庫版,注釋較多易于理解和學習。

GitHub 地址:https://github.com/taylorconor/tinytetris

(五)MyTinySTL

當你學習完 C++ 的“書本”知識后,是不是有些手癢了呢?MyTinySTL 這個注釋詳細、實踐夯實基礎的項目便是你 C++ 學習之旅的下一站。作為新手練習用途,MyTinySTL 的作者 Alinshans 用 C++11 重新復寫了一個小型 STL(容器庫+算法庫)。代碼結構清晰規范、包含中文文檔與注釋,并且自帶一個簡單的測試框架,適合 C++ 新手來實踐一番。

GitHub 地址:https://github.com/Alinshans/MyTinySTL

(六)C-Plus-Plus

C-Plus-Plus 是收錄用 C++ 實現的各種算法的集合,并按照 MIT 許可協議進行授權。這些算法涵蓋了計算機科學、數學和統計學、數據科學、機器學習、工程等各種主題。除外,你可能會發現針對同一目標的多個實現使用不同的算法策略和優化。

GitHub 地址:https://github.com/TheAlgorithms/C-Plus-Plus

(七)calculator

微軟開源的 Windows 系統預裝的計算器工具。該工具提供標準、科學、程序員計算器的功能,以及各種度量單位和貨幣之間的轉換功能。快來看看微軟工程師編寫的代碼吧!學習大廠的編碼規范、項目結構之類的,提高閱讀源碼的能力。英文的項目且沒有講解部分,需要通過閱讀源碼學習,難度較高。

GitHub 地址:https://github.com/microsoft/calculator

(八)workflow

workflow 是搜狗公司的服務器引擎,搜狗幾乎所有的后端 C++ 服務和其他幾十家公司都在使用這個引擎,每日處理超百億請求。不單網絡、磁盤 IO、CPU 計算等,workflow 著眼于所有異步資源都盡可能全部調起。使用 workflow,你可以輕松搭建后端服務器(如 HTTP Server),可以輕松高效地發起客戶端請求(支持 HTTP、Redis、Mysql、Websocket 和 Kafka 協議)。

GitHub 地址:https://github.com/sogou/workflow

(九)jwEngine

一個跨平臺、輕量級、支持 C++ 和 Lua 的 Web 框架。支持 TCP、KCP、WebSocket、HTTP 等協議,底層采用 libuv 異步 IO 提高并發,避免多線程上下文切換開銷和破壞代碼美感,網絡部分和邏輯部分使用一個主事件循環驅動。支持 Lua 提高開發效率,適用于小型游戲開發。

GitHub 地址:https://github.com/jwcpp/jwEngine

粉絲福利, 免費領取C/C++ 開發學習資料包、技術視頻/項目代碼,1000道大廠面試題,內容包括(C++基礎,網絡編程,數據庫,中間件,后端開發/音視頻開發/Qt開發/游戲開發/Linuxn內核等進階學習資料和最佳學習路線)↓↓↓↓↓↓見下面↓↓文章底部點擊免費領取↓↓

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

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

相關文章

有哪些掙錢軟件一天能賺幾十元?盤點十個能長期做下去的掙錢軟件

在這個信息爆炸的時代,每個人都在尋找快速賺錢的秘訣。很多人做兼職副業的目標并不是獲得很大的成功,大部分人一天能賺幾十就心滿意足了。 今天,我要帶你一探究竟,揭秘那些能讓你日賺幾十元的掙錢軟件。準備好了嗎?讓我…

單槍匹馬月入17萬美元:數字游民Pieter Levels如何成就商業傳奇

了解數字游民的應該都聽說過 Pieter Levels,可以說他是數字游民的先驅人物。 他在推特上擁有超過43萬的粉絲,僅憑一臺筆記本電腦就連續建立了多個高盈利網站,光是推特主頁上展示的比較新的幾個網站,每月收入加起來就高達 17.6 萬…

第九周:員工激勵理論

1. 關注自己到關注他人 你是激勵者,也會是被激勵者。 雖然每個人的價值觀不一樣,但要做好激勵員工這件事情,我覺得可以從自身角度出發,可以問問自己,你是如何被激勵的? 如果是我,就只想要錢&…

如何實現區域公司和專業公司合理有效的銜接?

對于集團公司來說,各區域公司、專業公司的管理問題成為困擾管理者的難題。特別是在信息壁壘比較嚴重的情況下,各個單位往往各自為政、自行其是,缺乏有效的溝通和協作,導致整體管理效率低下。那么應該如何實現區域公司和專業公司合…

Vulnhub項目:THE PLANETS: MERCURY

1、靶場地址 The Planets: Mercury ~ VulnHubThe Planets: Mercury, made by SirFlash. Download & walkthrough links are available.https://vulnhub.com/entry/the-planets-mercury,544/ 這好像是個系列的,關于星球系列,之前還做過一個地球的&a…

滑動窗口最大值-力扣

在做這道題時,首先想到的解法是使用隊列來做,維護一個隊列,每次保存滑動窗口大小的長度,并判斷此時隊列中的最大值,但這樣做,在k的值較大時,出現了超時問題,代碼如下: c…

STM32-15-DMA

STM32-01-認識單片機 STM32-02-基礎知識 STM32-03-HAL庫 STM32-04-時鐘樹 STM32-05-SYSTEM文件夾 STM32-06-GPIO STM32-07-外部中斷 STM32-08-串口 STM32-09-IWDG和WWDG STM32-10-定時器 STM32-11-電容觸摸按鍵 STM32-12-OLED模塊 STM32-13-MPU STM32-14-FSMC_LCD 文章目錄 STM…

[原創][Delphi多線程]TThreadedQueue的經典使用案例.

[簡介] 常用網名: 豬頭三 出生日期: 1981.XX.XX QQ: 643439947 個人網站: 80x86匯編小站 https://www.x86asm.org 編程生涯: 2001年~至今[共22年] 職業生涯: 20年 開發語言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 開發工具: Visual Studio、Delph…

悉數六大設計原則

悉數六大設計原則 目錄 悉數六大設計原則前言?誰發明了設計模式設計原則設計原則與設計模式的關系 單一職責什么是單一職責不遵循單一職責原則的設計遵循單一職責原則的設計單一職責的優點示例代碼: 里氏替換原則什么是里氏替換原則示例代碼:違反里氏替…

解讀信創產業根基,操作系統發展歷程

信創產業根基之一操作系統 操作系統是一個關鍵的控制程序,負責協調、管理和控制計算機硬件和軟件資源。作為硬件的首要軟件擴展,它位于裸機與用戶之間,充當了兩者之間的橋梁。通過其核心程序,操作系統高效地管理著系統中的各類資源…

static修飾變量和函數

static修飾的變量和函數只能在定義它的cpp源文件中使用,如果在頭文件中定義,則需要注意 在頭文件中定義static變量和static函數: 變量 如果在頭文件中定義了static變量,那么,所有包含這個頭文件的源文件都會定義自己…

vm-bhyve虛擬機安裝ubuntu22版本后進入grub無法啟動

問題:安裝ubuntu22版本后無法啟動 安裝好ubuntu22之后,重啟進入了grub模式,沒有自動啟動ubuntu 網上查了一下,這算一個通病。 問題解決 在grub模式下輸入boot命令: boot (lvm/ubuntu--vg-ubuntu--lv)/boot error: …

有哪些兼職軟件一天能賺幾十元?盤點十個能長期做下去的掙錢軟件

在當今這個信息泛濫的時代,眾人紛紛尋求迅速致富的捷徑。許多人在從事兼職或副業時,并不期望取得巨大的成就,只要每天能額外收入數十元,便已心滿意足。 今天,我將帶領大家深入探究,揭開那些隱藏在日常生活…

【小海實習日記】Git使用規范

1.Git使用流程 1.1 從master分支拉一個分支,命名要符合規范且清晰。 1.2 commit到本地,push 到遠端。 1.3 在Gitlab創建MR,選擇develp分支。 1.4 如果要修改的話,先把Gitlab上的MR修改為Draft(修改態),然后在本地修改代…

Dubbo中的Invoker與Exporter機制詳解

Dubbo作為一款成熟的高性能、輕量級的Java RPC框架,其核心機制之一便是Invoker與Exporter機制,它們在服務提供端和服務消費端扮演著至關重要的角色,是實現服務調用和管理的基礎。下面將詳細解析這兩個核心組件的工作原理及其在Dubbo框架中的作…

9.1.1 簡述目標檢測領域中的單階段模型和兩階段模型的性能差異及其原因

9.1目標檢測 場景描述 目標檢測(Object Detection)任務是計算機視覺中極為重要的基礎問題,也是解決實例分割(Instance Segmentation)、場景理解(Scene Understanding)、目標跟蹤(Ob…

詳解 Spark SQL 代碼開發之用戶自定義函數

一、UDF 一進一出函數 /**語法:SparkSession.udf.register(func_name: String, op: T > K) */ object TestSparkSqlUdf {def main(args: Array[String]): Unit {// 創建 sparksql 環境對象val conf new SparkConf().setMaster("local[*]").setAppNam…

subline text3安裝numpy,scipy,matplotlib,pandas,sklearn,ipynb

1,numpy(基礎數值算法) 安裝,要是在cmd直接安裝到最后會報錯, import numpy as np ModuleNotFoundError: No module named numpy 直接進入python環境,輸入python -m pip install numpy就不會報錯…

【SringBoot項目中MyBatis-Plus多數據源應用實踐】

文章目錄 前言 一、Mybatis-Plus是什么? 二、多數據源是什么? 三、使用步驟 1. 新建一個SpringBoot項目 2. 引入必要的MyBatis架包 3. 新建兩個數據庫及兩張表 3.3.1 新建數據庫:DB_A,并創建一張數據表alarm_kind,以及…

云端數據提取:安全、高效地利用無限資源

在當今的大數據時代,企業和組織越來越依賴于云平臺存儲和處理海量數據。然而,隨著數據的指數級增長,數據的安全性和高效的數據處理成為了企業最為關心的議題之一。本文將探討云端數據安全的重要性,并提出一套既高效又安全的數據提…