有哪些優秀的 C++ 代碼庫可以推薦學習?
07-14
我是大學一年級學生,想更多地了解 C++。
開源C ++庫的綜合列表:
1、通用
- Boost - 大量通用庫
- Dlib - 網路、線程、圖形界面、數據結構、線性代數、機器學習、XML和文本解析、數值優化、貝葉斯網路等(Boost許可證)
- JUCE - 廣泛、成熟、跨平台的C ++工具包(GPL許可證)
- Folly - Facebook開源庫
- Abseil - 來自Google C ++庫代碼的開源集合
- cxxomfort - C ++的Backports功能
- Ultimate++ - 跨平台的快速應用程序開發框架
- CAF
- Better Enums - 具有constexpr支持的反射枚舉
- Smart Enum - 「to_string」,「from_string」以及更多內容
2、通訊
- libnavajo - 輕巧但功能強大的API,包括用於Web和RESTful應用程序開發的http伺服器,支持SSL、身份驗證、cookie和會話管理,包括Websocket伺服器支持
- C++ RESTful framework - C ++微框架,旨在嵌入到廣泛的應用程序中
- CPR - 現代C ++ HTTP請求庫
- cpp-netlib - C ++網路庫
- cpp-redis - C ++ 11 Lightweight Redis客戶端
- tacopie - C ++ 11 TCP庫
- Boost.Beast - 建立在Boost.Asio之上的HTTP和WebSocket庫
- gsoap - 用於XML數據綁定的C / C ++開發工具包
- omniORB - C ++中最快,最完整,最便攜的CORBA ORB實現
- Unicomm - 非同步網路,高級TCP通信框架
- zeromq - 快速消息隊列
- libashttp - 非同步HTTP客戶端庫
- The Silicon C++14 Web Framework - 快速而強大的Web API(MIT)
3、圖形用戶界面
- Dear ImGui
- FLTK
- nana[doc] - 現代C ++風格的GUI編程
- OWLNext
- Switch
GTK+
- glibmm
- gtkmm
- goocanvasmm
- libglademm
- libgnomecanvasmm
- webkitgtk
- flowcanvas
- evince
Qt
- Qt [ src ] [ doc ]
- qwt5
- libdbusmenu-QT
- QuickQanava - 用於在Qt / QML應用程序中繪製有向圖的C ++ 14庫
- QuickProperties - 用於QObject / QtObject屬性版的C ++ / QML庫
4、通用多媒體
- SFM - 簡單快速多媒體庫
- SDL - 通過圖形API(通常為OpenGL或Direct3D)跨平台訪問音頻、鍵盤、滑鼠、操縱桿和圖形硬體
- SIGIL - 用於文本、形狀、輸入、音頻和2D圖像的跨平台庫
- Cinder
- openFrameworks
5、圖像
- cairomm
- nux
- pangomm
- gegl
- stb
- Adobe/boost GIL - 高級通用庫,專註於對2D圖像進行操作的演算法
- GraphicsMagick - 以超過88種格式讀取、書寫和操作圖像。
- Skia Graphics Engine - Google的核心圖形庫
繪製
- plotutils
格式
- libraw
- openexr
- qimageblitz
- imagemagick
- djvulibre
- poppler
- SVG++
6、音頻
- soundtouch
- KFR - 快速、現代的DSP架構,DFT / FFT,音頻重採樣,FIR / IIR濾波器,Biquad
- Aquila - 跨平台DSP庫
7、圖像處理
- OpenCV
- DLIB
- ITK
- OTB
8、視頻
- crystalhd
- mjpegtools
- libmatroska
- libVLC
- gstreamermm
9、3D圖形
- Vulkan
- OpenGL
- bgfx - 「自帶引擎/框架」樣式渲染庫
- Ogre3D
- Diligent Engine- 一個現代的跨平台低級3D圖形庫。
- GLEW - OpenGL函數載入
- GLAD - 可自定義的輕量級庫,用於載入OpenGL函數
- Visionaray - C ++光線跟蹤模板庫
10、遊戲引擎架構
- EntityX
- ANAX
- EntityPlus
- EnTT
- Box2D - 物理引擎
11、數學
線性代數
- Boost.uBLAS
- Eigen
- Armadillo
- Blitz++
- IT++
- Dlib - linear algebra tools
- Blaze
- ETL
優化
OptimLib - 用於非線性函數的C ++ 11數值優化方法庫。
12、機器學習
- stats++
- liblinear
- Dlib - 機器學習工具
- MLPACK - 機器學習包
- Shogun - 大型機器學習工具箱
13、容器
- Boost.Any
- Boost.Array
- Boost.Bimap
- Boost.Container
- Boost.Fusion
- Boost.Heap
- Boost.Pointer容器
- Boost.Tuple
- Boost.Variant
14、資料庫
- OTL
- DTL
- libpqxx
- lmdb ++ - 用於LMDB嵌入式B +樹資料庫庫的C ++ 11包裝器。
- mongocxx - MongoDB的C ++ 11驅動程序庫
- MySQL的++
- ODB - C ++對象關係映射(ORM)
- Pgfe - PostGres FrontEnd - PostgreSQL的現代C ++客戶端API
15、測試
- Boost.Test
- cppunit
- Google Test
- Catch2
16、嵌入式/實時
- QP / C ++ - RTOS內核,雙GPL
- FreeRTOS C ++處理程序 - 處理程序,循環器,狀態機,CLI,攜帶型
- ETL - 嵌入式模板庫 - C ++ 03,為低資源平台量身定製的攜帶型模板庫
- distortos - 面向對象的C ++ RTOS,用於微控制器
- μcuREST - 用於微控制器的C ++ 11 REST / JSON伺服器框架
練習C++:
- C++11/14 高速上手教程
- C++ 實現俄羅斯方塊
- C++ 實現太陽系行星系統
- C++實現課程管理系統
- C++ 開發 Web 服務框架
- C++ 基於 OpenCV 實現實時監控和運動檢測記錄
更多IT乾貨,請關注 實驗樓 ~
RapidJSON,一個JSON的解析器,高度模板化,全頭文件。 @Milo Yip
fffaraz/awesome-cpp?github.com
足夠從初學一直用到工作很久,甚至可能一直用到不再用C++為止……
grievejia/andersen
SVF-tools/SVF
seahorn/llvm-dsa
大一的話應該時間充裕,
建議先搞數據結構與演算法,
我推薦這本書:
《C++數據抽象和問題求解》豆瓣評分:0.0(0人評) ?www.douban.com基於c++11標準,
教會你如何使用C++分析問題和熟悉容器庫,
藉此設計一些ADT(類似Java集合框架api的)
還方便你遷移知識向其他語言了(2333,
不過很冷門就是了~
國外已經推到第七版,只不過國內沒引進,
如果有能力建議對照英文版,
至於優秀的庫,我最近跟著葉大的Json庫:
(準確來說是C89的項目,不過我覺得會很受益,你可以想辦法用一些C++的特性來書寫代碼)
Milo Yip:從零開始的 JSON 庫教程?zhuanlan.zhihu.com推薦閱讀:
※最近看到陳碩的一本書提了一個問題,「編譯器如何處理inline函數中的static變數?」
※如何看待 C++ 越來越像 Python 這個說法?
※C++ 的 string 為什麼不提供 split 函數?
※對於 C++ 的疑惑?
※關於VS2015的報錯問題,?
TAG:C |