devfrank_cpp
Useful learning resources about c++
基于awesome-cpp
等资源整理自己常用的实用工具及三方库。
目录
技术网站
常用库和框架
C++标准库,包括了STL容器,算法和函数等。
C++通用框架和库
人工智能
- btsk: 游戏行为树启动器工具。
- frugally-deep: 使用Keras模型的C++库,只有头文件。
- Genann: 简单的神经网络C库。
- MXNet: 轻量级、便携、灵活的分布式/移动深度学习,具有动态、可感知突变的数据流管理调度程序。适用于Python、R、Julia、Scala、Go、Javascript和更多网站。
- PyTorch: 具有强大CPU加速功能,包含张量和动态神经网络的Python库。
- Recast/Detour: (3D)导航网格生成器和路径查找,主要用于游戏。
- TensorFlow: 使用数据流图进行数值计算的开源软件库。
- CNTK: Microsoft Cognitive Toolkit (CNTK),开源的深度学习工具库。
- tiny-dnn: C++11中的无依赖项的深度学习框架,只有头文件。
- Veles: 用于快速深度学习应用开发的分布式平台。
- Kaldi: 语音识别工具包。
异步事件循环
- Asio: 用于网络和底层I/O编程的跨平台 C++ 库,使用现代 C++ 方法为开发者提供一致的异步模型。
音频
生物信息,基因组学和生物技术
比特流
化学,地球化学,生物化学
- d-SEAMS: 具有Nix的C++和Lua实现的分子动力学轨道分析引擎,它是分子模拟的递延结构分析的首字母缩写。
- gromacs: 传递消息的并行分子动力学实现。
- Reaktoro: C++和python中用于对化学反应系统进行建模的计算框架。
- LAMMPS: 经典的用于材料建模的分子动力学代码,它是大范围原子/分子巨量平行模拟器的首字母缩写。
控制台/终端用户界面,命令行界面
压缩和归档库
- ZLib: 非常紧凑的数据流压缩库。
- zlib-ng: 用于“下一代”系统的zlib,将一些重要的优化进行嵌入式替换。
- zstd: Zstandard-快速实时压缩算法。由Facebook开发。
- ZZIPlib: 提供ZIP归档的读权限。
并发和多线程
配置文件,INI文件
密码学和加密库
用于解析逗号分隔值(CSV)文件的库
数据库,SQL服务器,ODBC驱动程序和工具
调试库, 内存和资源泄露检测,单元测试
游戏引擎
- Acid: 高速的C++17 Vulkan游戏引擎。
- Allegro: 主要用于视频游戏和多媒体编程的跨平台库。
- Cocos2d-x: 用于构建2D游戏、交互式书籍、演示和其它图形应用程序的多平台框架。
- Corange: 用纯C、SDL、OpenGL编写的游戏引擎。
- Crown: Crown是一款通用的数据驱动游戏引擎,使用正统C++从零开始编写,并牢记简约和面向数据的设计理念。
- delta3d: 健壮的仿真平台。
- EnTT: 游戏与现代C++的碰撞。
- GamePlay: 用于创建2D/3D移动和桌面游戏的跨平台本机C++游戏框架。
- Godot: 功能齐全、开源、有MIT许可的游戏引擎。
- Grit: 社区项目,用于构建一个免费的游戏引擎,实现开放的世界3D游戏。
- Halley: 用C++14编写的轻量级游戏引擎,带有“真实的”实体组件系统。
- KlayGE: 具有基于插件架构的跨平台、开源的游戏引擎。
- nCine: 注重性能的跨平台2D游戏引擎,用C++11编写,还可以选择使用Lua编写脚本。
- OpenXRay: 在S.T.A.L.K.E.R.游戏系列中使用的社群修改的X射线引擎。
- Oxygine: 跨平台的2D C++游戏引擎。
- Panda3D: 游戏引擎,用于Python和C++程序的3D渲染和游戏开发的框架。
- PixelGameEngine: olcPixelGameEngine的官方发行版,该工具用于javidx9的YouTube视频和项目。
- Polycode: C++实现的用于创建游戏的开源框架(与Lua绑定)。
- raylib: 简单、易于使用的库,用于享受视频游戏编程的乐趣。
- Spring: 强大、免费、跨平台的RTS游戏引擎。
- Torque2D: 为2D游戏开发构建的开源、跨平台C++引擎。
- Torque3D: 为3D游戏开发构建的开源C++引擎。
- toy engine: toy是一个轻量的模块化的 C++ 游戏引擎,并提供简单的、有表现力的C++惯用法来快速迭代设计功能齐全的2D和3D游戏。
- Urho3D: C++实现的免费、轻量级、跨平台的2D和3D游戏引擎,受到OGRE和Horde3D很大的启发。
图形用户界面
- Boden: 本机、移动、跨平台的GUI框架。
- CEGUI: 灵活的跨平台GUI库。
- Elements: 轻量级、细粒度、分辨率无关的模块化GUI库。
- FLTK: 快速,轻量级的跨平台的C++GUI工具包。
- GacUI: GPU加速的C++用户界面,具有所见即所得的开发工具,支持XML,具有内置数据绑定和MVVM功能。
- GTK+: 用于创建图形用户界面的多平台工具包。
- gtkmm: 用于受欢迎的GUI库GTK+的官方C++接口。
- imgui: 拥有最小依赖关系的即时模式图形用户界面。
- implot: imgui的即时模式绘图控件。
- iup: 构建图形用户界面的多平台工具包。
- libui: C中简单、可移植(但是不灵活)的GUI库,使用其支持的每一种平台的本机GUI技术。
- MyGUI: 快速,灵活,简单的GUI。
- nana: Nana是现代C++风格的GUI编程的跨平台库。
- NanoGui: 简约、跨平台的控件库,用于OpenGL 3.x及更高版本。
- nuklear: 单个头文件的ANSI C gui库。
- QCustomPlot: 没有更多依赖关系的Qt绘图控件。
- Qwt: 用户与技术应用的Qt 控件。
- QwtPlot3D: 功能丰富的基于Qt/OpenGL的C++编程库,本质上提供了一群3D控件。
- RmlUi: 进化的HTML/CSS用户界面库,libRocket的分支。
- Sciter: Sciter是可嵌入的HTML/CSS/脚本语言引擎,旨在用于现代桌面应用程序的UI层。
- wxWidgets C++库,允许开发人员使用一个代码库可以为widows, Mac OS X,Linux和其他平台创建应用程序。
- Yue: 创建本机跨平台GUI应用的库。
图形
图像处理
- Boost.GIL: 通用图像库。
- CImg: 用于图像处理的小型开源C++工具包。
- CxImage: 用于加载,保存,显示和转换的图像处理和转换库,可以处理的图片格式包括 BMP, JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, TGA, WMF, WBMP, JBG, J2K。
- Dlib: 现代C++11的机器学习、计算机视觉、数值优化和深度学习工具包。
- FreeImage: 开源库,支持现在多媒体应用所需的通用图片格式和其他格式。
- libfacedetection: 用于图像中人脸检测的开源库,其人脸检测的速度能达到1500FPS。
- libjpeg-turbo: 使用SIMD指令来加速基线JPEG编码和解码的JPEG图像编解码器。
- OpenCV: 开源计算机视觉类库。
- OpenEXR: 具有高动态范围成像的跨平台库。
- OpenImageIO: 强大的图像和纹理处理库,支持多种常见的有损和RAW格式。
- Simd: 使用SIMD的C++图像处理库: SSE,SSE2,SSE3,SSSE3,SSE4.1,SSE4.2,AVX,AVX2,AVX-512,VMX(Altivec)和VSX(Power7),NEON for ARM。
- stb-image: STB单个头文件的图像加载库。
- tesseract-ocr: OCR引擎。
- TinyEXIF: 用于JPEG的微型ISO兼容的C++ EXIF和XMP解析库。
- Video++: C++ 14高性能的视频和图像处理库。
- VIGRA: 用于图像分析通用C++计算机视觉库。
- VTK: 用于3D计算机图形学,图像处理和可视化的开源免费软件系统。
国际化
- utf8.h: C和C++的单个头文件的utf8字符串函数。
进程间通信
Json
日志
机器学习
- Caffe: 快速的神经网络框架。
- CCV: 基于C /缓存/核心的计算机视觉库,现代计算机视觉库。
- darknet: 用C和CUDA编写的开源神经网络框架。
- Fido: 用于嵌入式电子和机器人技术的高度模块化的C++机器学习库。
- flashlight: 来自Facebook AI研究中心的快速、灵活的机器学习库,其完全用C++编写,基于ArrayFire张量库。
- libsvm: 支持向量机的简单、易用、高效的库。
- MeTA: 现代C++的数据科学工具包。
- Minerva: 快速、灵活的深度学习系统。
- mlpack: 可扩展的C++机器学习库。
- OpenCV: 开源计算机视觉库。
数学
- Apophenia: 用于统计和科学计算的C库。
- Armadillo: 用于线性代数和科学计算的快速C++库。
- autodiff: 用于自动微分的现代、快速且富有表现力的C++库。
- Boost.Multiprecision: 在C++中提供更高范围/精度的整数、有理数和浮点数类型,只包含头文件或者在GMP / MPFR / LibTomMath后端。
- ceres-solver: 来自谷歌的C++库,用于建模和解决大型复杂非线性最小平方问题。
- CGAL: 高效,可靠的几何算法集合。
- cml: 用于游戏和图形的免费C++数学库。
- Dlib: 现代C++11的机器学习、计算机视觉、数值优化和深度学习工具包。
- Eigen: 高级C++模板头文件库,包括线性代数,矩阵,向量操作,数值解决和其他相关的算法。
- ExprTK: C++数学表达式工具包库(ExprTk)是一个易于使用、易于集成且非常高效的运行时数学表达式解析器和评估引擎。
- Geometric Tools: 用于数学、图形、图像分析和物理学领域计算的C++库。
- GLM: 只包含头文件的C++数学库,可与OpenGL的GLSL数学匹配并互操作。
- GMTL: 数学图形模板库是一组广泛实现基本图形的工具。
- GMP: 用于个高精度计算的C/C++库,处理有符号整数,有理数和浮点数。
- Klein: 快速、SIMD优化的C++ 17几何代数库,用于点、线和平面投影、相交、连接、刚体运动等。
- linalg.h: C++的单头文件、公共域、短向量数学库。
- MIRACL: 多精度整数和有理数算法加密库。
- muparser: muParser是用C++编写的可扩展、高性能的数学表达式解析库。
- LibTomMath: 完全用C编写的免费、开源、可移植的数论多精度整数库。
- linmath.h: 精益线性数学库,主要用于图形编程。
- lp_solve: 用于制定和解决线性编程问题的库。
- OpenBLAS: 基于GotoBLAS2 1.13 BSD版本的优化BLAS库。
- QuantLibv: 用于计量金融的免费/开源库。
- StatsLib: 统计分布函数的C++库,只包含头文件。
- SymEngine: 快速符号处理库,用C++重写了SymPy的核心。
- TinyExpr: 用于解析和评估字符串中的数学表达式的C库。
- Vc: C++的SIMD矢量类。
- Versor: (快速的)几何代数的通用C++库,包括欧几里得、投影,保角、时空等。
- Wykobi: 高效、健壮且易于使用的C++库,面向C++ 2D / 3D的计算几何例程。
- xtensor: 受NumPy语法启发的C++ 14库,用于使用多维数组表达式进行数值分析。
- universal: 只包含头文件的C++ 14库,实现任意假定算数。假定数值系统是一个锥形浮点,比IEEE浮点更有效。假定数使可复现的计算科学成为可能。
内存分配
多媒体
网络
物理学
机器人学
科学计算
-
AMGCL: 只包含头文件的C++库,用于解决具有代数多重网格的大型稀疏线性系统。
-
FFTW: 用一维或者多维计算DFT的C语言库。
-
GSL: GNU科学库。
-
TileDB: 快速密集和稀疏多维数组的DBMS。
-
Trilinos: 高性能的PDE解算器。
-
Torch: 科学的计算框架,广泛支持将GPU放在首位的机器学习算法。
-
Lua: 用于配置文件和基本应用程序脚本的小型快速脚本引擎。
-
LuaBridge: 轻量级、无依赖的库,用于将Lua绑定到C++。
-
luacxx: 用于创建Lua绑定的C++ 11 API。
序列化
视频
Web应用框架
- Crow: 一个C++微型web框架(灵感来自于Python Flask)。
- Cutelyst: 在Qt上构建的C++ Web框架,使用Catalyst(Perl)框架的简单方法。
- Drogon: 基于C++ 14/17的高性能HTTP应用程序框架。
- facil.io: 事件型、高性能的C Web框架,支持HTTP、WebSocket、SSE等。
- oat++: 轻量、零依赖的框架,可创建高性能的Web服务。
- Pistache: Pistache是一个用纯C++ 11编写的C++ REST框架,没有外部依赖性。
- QDjango: 使用C++编写的,基于Qt库的web框架,试图效仿Django API,因此得此名。
- Wt: 开发Web应用的C++库。
XML
编译器与构建系统
- Clang: LLVM的C编译器,支持C++ 11/14 / 1z C11,由LLVM团队开发。
- GCC: GNU编译器集合,支持C++ 11/14 / 1z C11和OpenMP。
- LLVM: 模块化和可重用编译器和工具链技术的集合。
- Microsoft Visual C++: MSVC,由微软公司开发。
- Bazel: Google提供的多语言、快速且可扩展的构建系统。
- CMake: 跨平台的免费开源软件用于管理软件使用独立编译的方法进行构建的过程。
- Conan: C / C++程序包管理器,开源的。
- Ninja: 专注于速度的小型构建系统。
- Scons: 使用Python scipt 配置的软件构建工具。
- Premake: 配置有Lua脚本的工具,可以在Windows、Mac OS X和Linux上为Visual Studio、GNU Make、Xcode、Code::Blocks等生成项目文件。
- Vcpkg: Windows,Linux和MacOS的C++库管理器。
- XMake: 基于Lua的C / C++的跨平台构建实用程序。
调试器与静态代码分析
实践项目
TODO