標籤:

有哪些優秀的 C++ 代碼庫可以推薦學習?

我是大學一年級學生,想更多地了解 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 |