C++参悟:扩展资源

news2024/11/29 10:37:51

有用的资源

  • 一、概述
  • 二、模式、手法、提示和技巧
    • 1. cpppatterns
    • 2. C++ Core Guidelines
    • 3. MSDN
  • 三、第三方库

一、概述

在 cppreference 中我发现了很多比较有趣的扩展资源。我是从其官网下载的离线 chm 版本以便查看

https://zh.cppreference.com/w/%E9%A6%96%E9%A1%B5

在这里插入图片描述
在我下载的版本中有如下,在有用的资源部分有很多有用的东西,包括C++实现参考、C++的写法模式,库之类的:

在这里插入图片描述

二、模式、手法、提示和技巧

1. cpppatterns

链接: https://cpppatterns.com/

这个主要是社区创建的现代 C++ 示例,里面有很多方面的东西可以参考。每个例子都分类写了的,也注明了C++版本,在每一个例子也会有介绍内容;
在这里插入图片描述
就像我们需要异步去执行一个task,就可以采用这样的写法。代码也都是做了解释
在这里插入图片描述

2. C++ Core Guidelines

链接:https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconc-multi

这个就是讲的是一些编程中值得注意的一些点,也是一个参考资料,主要是对自己的编程习惯的一个建议。
在这里插入图片描述

3. MSDN

链接:https://learn.microsoft.com/en-us/cpp/cpp/welcome-back-to-cpp-modern-cpp?view=msvc-170

也是最常用的微软帮助手册
在这里插入图片描述

三、第三方库

此页面的目的是构建开源 C++ 库的比较列表,使得人们在需要特定功能的实现时,不必浪费时间在网上( DuckDuckGo 、谷歌、必应等。

开源 C++ 库列表

开源 C++ 库列表

库:目录
  • 包管理器

库:

  • 音频
    • CD
    • 音频指纹
    • 格式
    • 标签
  • 性能测试
  • 通信
  • 并发
  • 配置
    • 命令行
    • HOCON
    • JSON
    • TOML
    • XML
    • YAML
  • 容器
  • 密码学
  • 数据库
  • 嵌入语言绑定
  • 嵌入式/实时系统
  • 文件元数据
  • 金融计算
  • 游戏引擎架构
  • 通用多媒体
  • 通用
  • GPS
  • 图形用户界面
    • CopperSpice
    • GTK+
    • Qt
    • Ultimate++
  • 图形
  • 3D 图形
  • 图像
    • 格式
    • 绘图
  • 图像处理
  • 国际化
  • 日志
  • 错误处理
  • 数学
    • 自动化理论
    • 数的类库
    • 计算几何
    • 图论
    • 线性代数
    • 机器学习
    • 数值计算
    • 优化
  • 元编程
  • PDF
  • 物理与模拟
  • 序列化
    • 二进制序列化
  • 排序
  • 系统
  • 终端
  • 测试
  • 文本
    • 编码
    • Diff/Patch
    • 格式化
    • 语法分析
    • 搜索
    • 模板引擎
  • 版本控制
  • 视频
  • Web


包管理器

包管理器简述
build2一个开源的 (MIT)、跨平台的构建工具链,旨在为开发和打包 C/C++ 项目时提供如 Rust Cargo 一样的便利性。
cgetCMake 包检索工具,可用于下载并安装 CMake 包。
cmodule非侵入式 CMake 依赖管理。
conan去中心化、开源 (MIT) 的 C/C++ 包管理器。
CPM.cmake一段可以为 CMake 加入依赖管理功能的 CMake 脚本。它是作为 CMake 的 FetchContent 模块的一个简单包装构建的。该模块加入了版本控制、缓存、简单 API 等功能。
hunter一个 CMake 驱动的跨平台包管理器,服务于 C/C++ 项目。
spack一个超级计算机、Linux、macOS 平台的包管理器。它使得安装科学软件变得简单。非绑定于某一特定语言。
teaport一个受 cocoapods 启发的依赖管理器。
vcpkg一个 Windows、Linux、macOS 平台的 C++ 包管理器。


音频

库名简述协议配置手段
AquilaAquila 是一个开源、跨平台的 C++11 DSP 库。MITCMake
Essentia开源库,音频和音乐分析、描述和合成工具 (MIR) (源码)Affero GPLv3
FFTW离散傅里叶变换 (DFT) 计算库 (SSE/SSE2/AVX/Altivec/ARM Neon)。 (源码)GPL-2.0CMake
KFR快速、现代、C++17、开源并且跨平台的 DSP/DFT 框架。支持音频重采样、 FIR/IIR 滤波器、二阶滤波器, (SSE, AVX, AVX-512, ARM NEON)。 (源码)GPL-2.0CMake
soundtouchSoundTouch 是一个开源、跨平台的音频处理库,用于更改音频流或音频文件的速度、音调和播放速率。 (源码)LGPL-2.1Makefile
CD
库名简述协议配置手段
libkcompactdiscCD 接口库GPL v2.0CMake
音频指纹
库名简述协议配置手段
chromaprint(源码)MIT, LGPL-2.1CMake
libmusicbrainz(源码)LGPL-2.1CMake
libofaMusicIP 开源音频指纹库APLmakefile
格式
库名简述协议配置手段
audiofileLGPL-2.1makefile
flacOpen Source, BSD, GPL
libsndfileLGPL v2.0 or v3.0
标签
库名简述协议配置手段
id3libLGPL v2
taglib(源码)LGPL 和 MPL v1.1

性能测试

库名简述协议配置手段
benchmarkApache-2.0CMake
CeleroApacheCMake
gperftools“谷歌性能工具”包含高性能、多线程的 malloc 实现加上评测堆分配和 CPU 利用的工具。BSD 3-Clause "New" or "Revised" Licenseconfigure
plf::nanotimer用于性能评测的最低开销、跨平台的简单定时器类。zlib

通信

库名简述协议配置手段
ACE异步网络、多路分离、报文发送
Apache ThriftApache Thrift 软件框架,用于规模可变的跨语言服务开发,将软件栈与代码生成引擎结合,构建有效而无缝地在 C++ 、 Java 、 Python 、 PHP 、 Ruby 、 Erlang 、 Perl 、 Haskell 、 C# 、 Cocoa 、 JavaScript 、 Node.js 、 Smalltalk 、 Ocaml 、 Delphi 及其他语言间工作的服务。
Boost.Asio异步及同步网络、定时器、序列 I/OBSL-1.0
Boost.Beast建立于 Boost.Asio 顶上的 HTTP 及 WebSocket 库BSL-1.0
Breep基于事件、高层、点对点库,允许用户直接发送和接收对象。European Union Public License 1.1CMake
C++ REST SDK异步 HTTP 客户端及监听器、异步 Stream 、 URI 、 JSONMITCMake
cpp-netlibcpp-netlib : C++ 网络库BSL-1.0CMake
cpr现代 C++ HTTP 请求库MITCMake
CrowBSD-3-ClauseCMake
curlppCURL 库的 C++ 包装
DumaisLibMITMakefile
EasyHttp跨平台的 HTTP 客户端库,专注于可用性和速度,支持 http 响应缓存及更多MITCMake
eCAL高性能进程间通信Apache-2.0CMake
fineftp-serverMITCMake
gRPC
gsoapXML 数据绑定、快速 WSDL/SOAP/XML 网络服务、 WS 安全、 JSON/XML-RPC RESTful 服务的 C/C++ 开发工具套
HTTPP简单、生产就绪的构建在 Boost 上的 HTTP 服务器,及构建在 libcurl 上的客户端。BSD 2-Clause "Simplified" LicenseCMake, Makefile
IXWebSocket无依赖的开源 WebSocket + HTTP 库,支持 SSL 和逐条消息 deflate 的 WebSocket 扩展。BSD 3-Clause "New" or "Revised" LicenseCMake, Makefile
KCP快速可靠的 ARQ 协议,帮助应用减少网络延迟。MITCMake
libashttp异步 HTTP 客户端库GNU Lesser General Public License v3.0
libnavajoCeCILL-C FREE SOFTWARE LICENSE AGREEMENTCMake
libtins网络包装制作及嗅探库
nanomsg
netifBSD 3-Clause "New" or "Revised" LicenseCMake
nghttp2HTTP/2 C 库及工具(服务器、客户端、代理和评测工具)MITCMake, configure
ngrest快速而简易的利用 JSON 的 RESTful 网络服务框架Apache-2.0CMake
nng
omniORB最快速、完整而可移植的 CORBA ORB 在 C++ 中的实现
OpenDDSDDS 实现
Paho MQTTCMake
paozhuC++20 Web Framework Support HTTP/2 ORM WebSocketMITCMake
PcapPlusPlus多平台 C++ 网络嗅探和包装分析及制作框架
POCO网络:加密、 HTTP ; ZIP 文件
rest_rpc现代、简单、易用的 rpc 框架CMake
restbed设计以嵌入到宽范围的应用中的 C++ 为框架。许可协议CMake
restc-cpp将痛苦从自 C++ 访问 JSON API 带走。 HTTP 客户端,原生 C++ 类到/自 JSON 的序列化,通过 boost::asio coroutines 携程的异步 IO 。 C++14 。MITCMake
restful_mapper于 C++ 中消费 RESTful JSON API 的 ORMCMake, Makefile
seastar用C++11实现的高性能异步编程框架。Apache-2.0CMake, etc.
Silicon快速而稳健的 Web APIsMITCMake
sockpp简单的现代 C++ 套接库BSD 3-Clause "New" or "Revised" LicenseCMake
Simple C++ REST library在你的 C++ 应用中创建 REST API 的非常简单且自成文档的库
stream-client轻量、唯头文件的、基于 Boost 的客户端 socket/connector/socket pool/resolverApache-2.0CMake
tacopieC++11 TCP 库MITCMake
TAOCORBA
taox11基于 C++11 的 CORBA 实现MIT
Unicomm异步网络、高层 TCP 交互框架
uvw现代 C++ 书写的 libuvMITCMake
wvstreamsGPL
zeromq快速消息队列

并发

库名简述协议配置手段
BlockingCollectionC++11 线程安全汇集类,模仿 .Net BlockingCollection。
Boost.AtomicBSL-1.0
Boost.Compute(非官方) OpenCL 的仿 STL 算法及数据结构BSL-1.0
Boost.ContextBSL-1.0
Boost.InterprocessBSL-1.0
Boost.LockfreeBSL-1.0
Boost.MPIBSL-1.0
Boost.ThreadBSL-1.0
Cpp-Taskflow带任务依赖的快速 C++ 并行编程
hipSYCLBSD-2-Clause LicenseCMake
HPX任何规模的并行和分布式应用的通用 C++ 运行时系统
Intel TBB
KOKKOSC++ 中的编程模型,用于书写高性能的便携 HPC 应用
libopenmpi
libsimdpp
MutexGearThe MutexGear Library Licenseconfigure, MSVC
OpenMP
RaftLib类似并发行动者的 C++ 流
SObjectizer通过行动者和出版订阅模型,简化开发并发和事件驱动应用的 C++ 中的小型框架。
subprocess
Taskflow
ThrustCUDA 的仿 STL 算法及数据结构
VexCLOpenCL 和 CUDA 的 C++ 表达式模板库
ViennaCL带 OpenMP 、 CUDA 及 OpenCL 后端的线性代数及算法
Xenium

配置

库名简述协议配置手段
Boost.Program_options该库允许通过命令行、配置文件、环境变量等传统方式获得用户输入的(名称,值)对作为程序选项。BSL-1.0
gconfmm
libconfig
libconfiniINI 分析器
uconfig轻量级唯头文件 C++17 配置库Apache License 2.0CMake
命令行
库名简述协议配置手段
Boost.Program_options该库允许通过命令行、配置文件、环境变量等传统方式获得用户输入的(名称,值)对作为程序选项。BSL-1.0
cxxopts轻量级 C++ 命令行参数选项分析器MITCMake
gflags实现了命令行参数选项处理的库。它包含对 string 等标准类型的自建支持,并可以在所使用的的源文件中定义参数选项。BSDCMake
hbristow/argparse一个用于命令行参数分析的 C++ 类,具有和 Python 的同名类相似的接口。BSD
morrisfranken/argparse用于优雅地分析命令行参数的轻量级唯头文件库MITCMake
p-ranav/argparseC++17 单头文件参数分析器MITCMake
tclap一个用于命令行参数选项分析的简洁的模板化的 C++ 库。该库提供简洁而灵活的面向对象接口。MITCMake
CSS
库名简述协议配置手段
mycssCSS 解析器
HOCON
库名简述协议配置手段
cpp-hoconPupplet 开发的 HOCON 格式的 C++ 实现。
JSON
库名简述协议配置手段
ArduinoJsonArduinoJson
CAJUN
janssonJansson 是编码、解码及操纵 JSON 数据的 C 库。
jeayeson非常健全的(唯头文件) C++14 JSON 库
jiosJSON 输入输出流 (JSON Input Output Streams)MITCMake
JOST
JSON VoorheesC++ 的杀手 JSON
jsonNiels Lohmann JSONMIT仅头文件库
JSON++
json-cpp
json11json11 是 C++11 的轻量 JSON 库,提供 JSON 分析及序列化。
JsonBox
jsonconsJSON 与类 JSON 数据结构的唯头文件库,含 JSON Pointer 、 JSON Patch 、 JSONPath 、 CSV 、 MessagePack 、 CBOR 、 BSON 、 UBJSON。
jsoncpp
jsonme--
libjson
minijsonC++ 无 DOM 且免分配的 JSON 分析及序列化
nosjob
qjson
rapidjson
simdjson每秒解析 GB 级别的 JSON
struct_mapping
ThorsSerializerJSON/YAML Input Output StreamsMITMakefile
ujsonµjson 是小型的 C++11、UTF-8 JSON 库
zoolib
TOML
库名简述协议配置手段
toml++
toml11基于 C++11 的 TOML 解析库
XML
库名简述协议配置手段
ai-xml
GPDS
gSOAPXML 数据绑定
libxml++
pugixml
tinyxml
tinyxml2另一 TinyXML ,建设中。
Xerces
YAML
库名简述协议配置手段
yaml-cpp

容器

库名简述协议配置手段
Boost.BimapBSL-1.0
Boost.ContainerBSL-1.0
Boost.FusionBSL-1.0
Boost.HeapBSL-1.0
Boost.Pointer ContainerBSL-1.0
Boost.TupleBSL-1.0
Boost.VariantBSL-1.0
cpp-btreebtree_map 、 btree_set 、 btree_multimap 、 btree_multiset 。
DataFrameC++ DataFrame —— 现代 C++ 中使用原生类型、连续内存存储,且无虚函数的 R 与 Pandas 数据框架。
eggs::variantEggs.Variant 是 C++11/14 的泛型、线程安全、有区别的联合体。值得注意的是它有很好的 constexpr 支持。
Frozenconstexpr 完美基于哈希的冻结集合与映射( Apache 2.0 )。
ImmerBSL-1.0CMake
plf::colony无序的“类背包”容器,在高度修改场景中性能优于 std:: 容器,同时维护指向未被擦除元素的合法指针,无关乎插入或擦除。
plf::liststd::list 实现,为缓存友好牺牲范围切割,导致更快的插入、擦除和迭代。
plf::stackstd::stack 容器适配器的随意访问替换容器,在栈环境中有优于 std::vector 和 std::deque 的性能。
ring_spanGuy Davidson 与 Arthur O'Dwyer 的 ring_span ——即环状缓冲区视图的简化实现。
strict_variant快速而决不空的 variant ,目标 C++11 。阻止许多不想要的隐式转换。
TdhLists
Ygg高性能容器和数据结构,例如红黑树、区间数和区间映射的侵入式 C++11 实现。

密码学

库名简述协议配置手段
Botan
crypto++
gnutls
openssl
TomCrypt

数据库

库名简述协议配置手段
cpp-redisC++11 轻量的 Redis 客户端:异步、线程安全、无依赖、管道化、多平台。
DTL
EasyQtSql轻量唯头文件 C++11 库,用 QtSql 快速便捷地进行 SQL 查询
LevelDB谷歌开发的、能够处理十亿级别规模 Key-Value 型数据持久性存储的C++ 程序库。
libpqxx
lmdb++LMDB 嵌入式 B+ 树数据库的 C++11 包装。
mongocxxMongoDB 的 C++11 驱动库
mysql++
ODBC++ Object-Relational Mapping (ORM)
OTL
PgfePostGres FrontEnd现代 C++ 客户端 API 到 PostgreSQLZlib LicenseCMake
QTLA friendly and lightweight C++ database library for MySQL, SQLite and ODBC.
QUINCEQUeries IN C++ Expressions (ORM+EDSL)Boost License
QxOrmObject Relational Mapping (ORM) database library for C++/Qt, supports most common databases, serialization (JSON, binary, XML); standalone multi-threaded HTTP web serverGPLv3 or Proprietary license
redis-cppC++17 Lightweight C++ client header-only library for executing Redis commands.
redis-plus-plus用C++ 11编写的Redis客户端, 支持Redis Sentinel,Redis Cluster,管道,事务,发布订阅,连接池以及类似于STL的接口
SOCI
SQLAPI++
SQLiteCPP
sqlpp11
taoPQLightweight C++17 PostgreSQL client libraryMIT LicenseCMake

嵌入语言绑定

库名简述协议配置手段
AngelScript类似 C++ 的脚本语言。
ChaiScript
ExprTk
JinxScripting language designed for videogames.
lua
mozjs
muparser
PythonQt
ScriptCaller允许程序员调用 Ruby 脚本的唯头文件库。
sol2
v8pp将 C++ 函数和类绑定到 V8 JavaScript引擎中。

嵌入式/实时系统

库名简述协议配置手段
distortos微控制器的面向对象 C++ RTOS
ETLEmbedded Template Library - C++03 ,为少资源平台裁剪的可移植模板库
QP/C++RTOS 内核GPL或商业许可
µcuREST微控制器的 C++11 REST/JSON 服务器框架

文件元数据

库名简述协议配置手段
exempi
exiv2
libkexiv2
rarian

金融计算

库名简述协议配置手段
DataFrameC++ DataFrame —— 现代 C++ 中使用原生类型、连续内存存储,且无虚函数的 R 与 Pandas 数据框架。
QuantLibQuantitative finance library

游戏引擎架构

库名简述协议配置手段
Anax
Box2D2D 游戏物理引擎MITCMake
EntityPlus
EntityX
EnTT快速可靠的ECSMITCMake

通用多媒体

库名简述协议配置手段
Cinder
Kigs-frameworkModular Multi-purpose Cross Platform FrameworkMIT license
openFrameworksMIT
SDL(Simple DirectMedia Layer): 对音频、键盘、鼠标、操纵杆及图形硬件,经由平台上图形 API (通常为 OpenGL 或 Direct3D )的跨平台低层访问zlib
SFMLSimple and Fast Multimedia Library
SIGILSound, Input, and Graphics Integration Library; 文本、形状、输入、音频及 2D 图像的难以置信地简单的跨平台极简库

通用

库名简述协议配置手段
AbseilGoogle 设计以补足 C++ 标准库的开源 C++ 库代码汇集。
Abstract Intrusive Containers比 boost::intrusive 更灵活,但非 STL 兼容。
BDE来自 Bloomberg L.P. 的 Bloomberg Development Environment 核心库Apache
Better Enums反射性枚举(枚举到字符、迭代等),带 constexpr 支持。BSD
bitfield.h位域结构设施,比基础语言设施更可移植/灵活。
Boost大量通用库的汇集BSL-1.0
CAFC++ Actor Framework (CAF) 是开源的 C++11 行动者模型实现,特性为轻量而快速的行动者实现、消息的模式匹配、网络不可见消息传递及更多BSD
CinderA community-developed, free and open source library for professional-quality creative coding in C++. (Doc) (Src)Modified BSD LicenseCMake
CommonPP多用途库,强调在项目中得出度规。BSD
composite_op.h基础类数据成员自省,繁琐且常常不可重入,但有时有用。
cpp-mmf对 POSIX 或 Windows 封装映射到内存文件的 C++98 库
cxxomfortC++ 特性逆向移植( C++11 到 C++03 及 C++1y 提案到 C++11/C++03 )。
Dlib网络、线程、图形用户界面、数据结构、线性代数、机器学习、 XML 及文本分析、数值优化、贝叶斯网络和大量其他任务BSL-1.0
fcpptFreundlich 的 C++ 工具套 (fcppt) 是聚焦于通过提供更好的类型和函数式编程改进 C++ 代码的库汇集。
FollyFacebook 开源库。设计带有构思中的实践性和效率设计的 C++11 组件库。
GSLGuideline Support Library 实现,为 Bjarne Stroustrup, Herb Sutter 和 Co 在《 C++ 核心方针》中推荐
gsl-liteC++98 、 C++11 及后续版本的 ISO C++ Guideline 支持库 (GSL) 的单文件唯头文件版本。
HistoryModern C++17 Undo/Redo FrameworkUnlicense
IP-DOS (tm)IdeaFarm (tm) Piggyback Distributed Operating System: A general purpose programming environment for the C++ language.Proprietary Open SourceOpen Watcom 2.0
JUCE扩展性的成熟跨平台 C++ 工具套GPL
KangaruC++11 与 C++14 的依赖注入容器MIT
libsourcey高速网络化和多媒体编码的跨平台 C++11 库。 HTTP 、 WebSockets 、 TURN 、 STUN 、 Symple 及更多……
LLNL/unitsA run-time C++ library for working with units of measurement and conversions between them and with string representations of units and measurementsBSD 3-Clause "New" or "Revised" LicenseCMake
Loki设计模式
nonstd-lite*-lite 仓库的亲属,将 C++11 后特性移植到古代 C++ 环境的迁移路径。
nytl通用的 C++17 唯头文件模板库。BSL-1.0
OnPosix在 POSIX 平台上提供各种抽象(例如线程、网络化、日志、 IPC 等)的 C++ 库。
Reasonxml 、 xpath 、正则表达式、线程、接头、 http 、 sql 、日期时间、流、编码与解码、文件系统、压缩GPL
SaferCPlusPlusSaferCPlusPlus - 不安全的 C++ 原始工具的安全兼容替换品,包括指针、 int 和 std::vector。BSL-1.0
Smart Enum给你的枚举 "to_string" 、 "from_string" 和更多。BSL-1.0
units编译时唯头文件的量纲分析及单位转换库,建立于 C++14 而无依赖。
yaal算法、汇集、任意精度计算、泛型 DSL 文法驱动分析器及更多CC BY-ND-NC 4.0CMake
Yato现代 C++ (14/17) 的跨平台 STL 风格及 STL 兼容库,实现容器、范围、迭代器、类型特性和其他工具;行动者系统;类型安全配置接口Apache-2.0
yomm2C++17 的开放式多方法BSL-1.0

GPS

库名简述协议配置手段
gpsd

图形用户界面

库名简述协议配置手段
Dear ImGui高度优化的不膨胀的图形用户界面库。
FLTK
nana用现代 C++ 风格的 GUI 编程BSL-1.0CMake
nanogui最小化的跨平台器件库,适用于 OpenGL 3.x 或更高版本
OWLNext对 OWL 的,用于在 Windows 上以标准 C++ 书写 GUI 应用的现代更新
tiny file dialogs单个 C C++ 跨平台文件(无初始化、无 main 循环、 6 种形态的函数调用)
WxWidgets
xtdModern C++17/20 framework to create console, GUI and unit tests applications on Windows, macOS, Linux, iOS and android. (Website) (Doc)MIT LicenseCMake
CopperSpice
库名简述协议配置手段
CopperSpiceCopperSpice 是用于开发跨平台软件应用的 C++ 库集合。它在 LGPL V2.1 许可下发布。它使用现代理念的 C++ 并与 STL 无缝结合。 CopperSpice 派生自 Qt 框架。
CsSignal独立的 C++ 具线程信号/槽库
CsString独立的 C++ 具 Unicode 字符串库
libGuarded独立的 C++ 多线程库,用于管理对共享数据的访问
GTK+
库名简述协议配置手段
evince
flowcanvas
glibmm
goocanvasmm
gtkmm
libglademm
libgnomecanvasmm
webkitgtk
Qt
库名简述协议配置手段
libdbusmenu-qt
Qt
QuickQanava直接在 Qt/QML 应用中画图的 C++14 库;项目主页: http://www.qanava.org
qwt5技术应用到 Qt Widgets
qwtplot3d
QuickPropertiesQObject/QtObject 属性编辑的 C++/QML 库;项目主页: http://www.qanava.org
Ultimate++
库名简述协议配置手段
Ultimate++跨平台的迅速应用开发框架
upp-componentsA collection of 3rd party packages for Ultimate++ like TerminalCtrl, MessageCtrl etc..BSD-3-Clause

图形

库名简述协议配置手段
bgfx非常强大的跨平台图形渲染库,支持平台包括 Windows Mac Linux iOS Android Web,渲染后端包括 DX, opengl, metal webgl等。
cairomm
dfpsr2D, 3D and isometric software renderer with desktop GUI toolkit, minimalistic dependency, designed for long time maintenance and can run without any 3D accelerated driverszlib license
geglGEGL (Generic Graphics Library) is a data flow based image processing framework, providing floating point processing and non-destructive image processing capabilities. (Src)LGPL
io2dReference Implementations of P0267, the proposed 2D graphics API for ISO C++Boost LicenseCMake
nanovg基于openGL/DX/metal的2d绘图库。
nux
pangomm
Skiais an open-source 2D-graphics library written in C++. Skia is used in Google Chrome, Chrome OS, Mozilla Firefox, Android, LibreOffice, Flutter, etc. Skia has several back-ends: software rasterization, (PDF) output, OpenGL, SVG, etc.New BSD License
TXLibTX Library is a tiny 2D graphics library for Win32 written in C++.
ULISCross-Platform C++14 Library, Generic digital image processing, 2D Software rasterizer, Unlimited image formats (u8, u16, u32, float, double), Custom bit-ordered memory layout, All Photoshop pixel blending modes + 11 additional modes, Color models (RGB, HSL, HSV, CMYK, ...), Color-managed pipelines, Color Space support (icm profiles and device-independant), Optimized algorithms with multithreading, Optimized algorithms with SIMD Extensions (SSE2), Image pools and caches for optimisations, Memory storage of animated image sequencesCustom (free-of-charge for non-commercial purposes only)CMake

3D 图形

库名简述协议配置手段
assimp3D 模型加载
bgfx跨平台、不知图形 API 、“带来你自己的引擎/框架”风格的制图库。
Diligent Engine现代跨平台低层 3D 图形库。
EpoxyGLEM 的现代后继者。在 GL 环境的一些种类间抽象,这使得有时比使用 GLEW 更加单。自 2015 起为 GTK+ 项目所用。
G3DThe G3D Innovation Engine is a fully featured, open source, cross platform (Windows, Linus, Mac OS) 3D game engine written in C/C++. G3D is used in commercial games, research papers, simulators, and university courses. It supports real-time and offline hardware rendering, ray tracing, model loading, linear algebra, and GP-computation on GPUs. Supports 3DS, OBJ, MP4, PNG, JPG, MD3 and many other formats, includes a native OpenGL skinnable GUI. (Src) (Doc)BSD-2 license
GLAD可定制的轻量库,用于加载 OpenGL 功能
GLEWOpenGL 功能加载
GLFWOpenGL 窗口管理器
GLM制图用的唯头文件 C++ 数学库
hlsl++使用 hlsl 语法的唯头文件 C++ 渲染库。支持 SSE 和 NEON
Horde3D
Irrlicht
kleinC++11/14/17 SSE-optimized Projective Geometric Algebra library for graphics and animation
Magnum游戏和数据可视化的轻量模块化的 C++11/C++14 图形中间件
O3DEOpen-source 3D Engine (former Amazon's Lumberyard) is a C++ multi-platform 3D engine to build AAA games, cinema-quality 3D worlds, and high-fidelity simulations. Includes physics simulation, script engine, networking, and more. (Doc)Apache 2.0CMake
Ogre3D
Open CASCADE3D CAD/CAM/CAE 应用的 SDK
OpenGL
OpenSceneGraph
VisionarayC++ 光束追踪模板库
VTK
Vulkan

图像

库名简述协议配置手段
Adobe/boost GIL高层通用库,聚焦于 2D 图像上操作的算法。非常有限定 I/O 选项。
aggeAnti-Grain Evolution. 2D graphics engine for Speed and Quality in C++MIT LicenseCMake
Anti-Grain Evolution跨平台 2D 光栅化及绘图引擎
FreeImageAn Open-Source library project for developers who would like to support popular graphics image formats like PNG, BMP, JPEG, TIFF and othersGPLv2, GPLv3, FIPL
gegl
GraphicsMagick读、写、操纵 88 种主要格式的图像。于 2002 年分化自 ImageMagick
SAILReading and writing static, animated, multi-paged images along with their meta data and ICC profiles. No manipulating capabilities. Targets simplicity and speed.MITCMake
Skia Graphics EngineGoogle 从 2005 年起的图形库,用于 Chrome 、 Chrome OS 、 Android 还有 Firefox 和 Sublime Text enwiki:Skia_Graphics_Engine
stb.image
格式
库名简述协议配置手段
djvulibre
imagemagick
Kaitai Struct C++ runtime
libraw
openexr
poppler
qimageblitz
SVG++
绘图
库名简述协议配置手段
Matplot++A gnuplot based C++ Graphics Library for Data Visualization. Matplot++ can take advantage of the following libs: OpenCV, OpenGL, LAPACK, BLAS, FFTW, JPEG, TIFF, ZLIB, PNG, GLAD, GLFW3. (Doc)MIT LicenseCMake
plotutils

图像处理

库名简述协议配置手段
dlib
HalideA C++-embedded DSL for high-performance processing of images and tensors.MITCMake, vcpkg
ITK
opencv
OTB

国际化

库名简述协议配置手段
gettext
IBM ICU
spirit-po快速的唯头文件库,分析 po 文件,并提供类似 GNU libintl 的接口。基于 boost::spirit 。

日志

库名简述协议配置手段
Backward打印漂亮的 Python 风格栈追踪,带颜色和源代码片段,特别是在崩溃时。MIT
Boost.Log
glogGoogle 日志库
Log4cplus日志 API ,提供日志管理及配置上的线程安全、灵活且有任意粒度的控制。
Log4cpp用于灵活地记录到文件、系统日志、 IDSA 或其他目标的 C++ 类库 (LGPL)
log4cxxApache log4cxx 是 Apache log4j 后的 C++ 模式化记录框架
Pantheios诊断日志 API 库,提供类型安全、效率、泛型和可扩展性的结合
plogC++ 的可移植且简单的日志,少于 1000 行代码 (MPL2)
QuillC++14 Asynchronous Low Latency Logging Library
spdlog超快的唯头文件 C++ 日志库

错误处理

库名简述协议配置手段
Boost.LEAFLightweight error-handling library for C++11: single-header format, no dependencies, no dynamic memory allocations, can be used with or without exception handling, multi-threading ready.BSL-1.0

数学

库名简述协议配置手段
alglib
ArrayFire High Performance Computation Library
BigNumber创建和计算任意长度整数的 C++ 类
Boost.Math.Special Functions and Statistical Distributions
Boost.Multiprecision
Boost.Random
Boost.SafeNumericsC++14, header only, Guaranteed Correct Integer Arithmetic, a drop-in replacement for the built-in integer types.BSL-1.0
C++ Matrix高性能且精确(例如极端情况)的矩阵数学库,带表达式模板算术运算符
CasADiSymbolic framework for nonlinear optimization and algorithmic differentiation. Supports C++ code generation for symbolic expressions and dynamic connection of compiled generated code.
cpp-measures处理物理度量的唯头文件 C++11 库
Exact floating-point arithmetic library
G+Smo等几何分析的跨平台库
GNU MP bignum C++ interface
libmpdec++Cross-platform library for correctly-rounded arbitrary precision decimal floating point arithmetic.BSD-2-ClauseAutoconf, Visual Studio build scripts
PCGrandPCG is a family of simple fast space-efficient statistically good algorithms for random number generation. Unlike many general-purpose RNGs, they are also hard to predict.Apache License
NTL - A Library for doing Number Theory
RPNX Uniform Smooth NoiseN 维均匀分布的平滑噪声函数,以 C++ 实现。
SEMTCompile time symbolic differentiation
stats++先进、广泛的统计软件:数据收集及预处理、统计、机器学习及优化,拥有开放的 C++ 源码。
StatsLib统计分布函数的模板化唯头文件库。
自动化理论
库名简述协议配置手段
State DiagramAn easy to use C++20 library for hierarchical finite state machines (Doc)Apache 2.0 License
yasmine - C++11 UML state machine framework
UML_StateMachineUML State Machine is a pure C++20 library for defining state charts statically and executing them. (Doc)GPLv3 LicenseCMake
数的类库
库名简述协议配置手段
cln
CNLCompositional Numeric Library - fixed-precision numeric typesBSL-1.0CMake, Conan
Universal Numbers通用数算术的 C++ 模板库,取代 IEEE 浮点MIT
计算几何
库名简述协议配置手段
CGAL计算几何算法库
PCL点云库
pmp-libraryPolygon Mesh Processing Library
Wykobi计算几何库
图论
库名简述协议配置手段
Boost.Graph
CXXGraphA C++17 Header-Only Library for Graph Representation, Manipulation, Partitioning and AlgorithmsAGPL-3.0CMake
GTpoC++14 泛型图拓扑库,带 Protocol Buffer 序列化;项目主页: http://www.qanava.org
LEMON
NGrapha simple (Network) Graph library in C++
OGDFOpen Graph Drawing Framework
线性代数
库名简述协议配置手段
Armadillo
Blaze
Blitz++
Boost.uBLAS
DecompLib唯头文件的 C++11 库,分解向量为正定加权基向量的集合。
Dlib - linear algebra tools
Eigen
ETL
IT++
MatrixEasy-to-use Scientific Computing library in/for C++ available for Linux and Windows.MIT LicenseCMake
PETScA suite of data structures and routines for the parallel solution of scientific applications modeled by partial differential equations. It supports MPI, and GPUs through CUDA or OpenCL, as well as hybrid MPI-GPU.
xtensorA C++ library meant for numerical analysis with multi-dimensional array expressions.BSD
机器学习
库名简述协议配置手段
ANNetGPGPU基于GPU(CUDA)的人工神经网络库。
btsk游戏行为树入门套件。
CNTK微软认知工具包(CNTK),一种开源的深度学习工具包。
Dlib机器学习工具
DLDTOpenVINO™工具包-深度学习部署工具包
Evolving Objects基于模板的 C++ 演化计算库,可帮助您快速随意地编写自己的随机优化算法。
FANN快速人工神经网络库
frugally-deep仅头文件的库,用于在 C++ 中使用Keras模型。
Genann简单神经网络库。
Kaldi语音识别工具包。
liblinear
libtorchC++ frontend to the popular PyTorch Python library (backend is written in C++)BSD-style licenseCMake
MLPACK机器学习包
NCNN腾讯开发的、针对移动平台进行了优化的高性能神经网络推理框架
OpenPose实时多人关键点检测库,用于身体,面部,手和脚的检测
Paddle并行化分布式深度学习库
Recast/Detour导航网格生成器和浏览器,主要用于游戏。
stats++
Shogun大规模机器学习工具箱
tensorflow面向所有人的开源机器学习框架
TensorRT用于在 NVIDIA GPU 和深度学习加速器上进行高性能推理的 C++ 库
tiny-dnn基于 C++11 的唯头文件、无依赖的深度学习框架。
Veles用于快速深度学习应用程序开发的分布式平台。
数值计算
库名简述协议配置手段
LibBF由 Bellard 开发的任意精度数值计算库,拥有一个将圆周率计算到数十亿位的示例程序
优化
库名简述协议配置手段
ceres-solverOpen-source C++ library for modeling and solving large, complicated optimization problems. It is a feature rich, mature and performant library which has been used in production at Google since 2010.Apache LicenseCMake, Conan
OptimLib非线性函数数值优化方法的 C++11 库。

元编程

库名简述协议配置手段
Boost.CallableTraits
Boost.Hana类型与值的新元编程库
Boost.Metaparse编译时分析器库,从编译时字符串产生类型、值和元函数
Boost.Mp11
Boost.MPL原初元编程库,目标为 C++03 ,慢
Boost.PFRA header only C++14 library for basic reflection (without macros): visiting members of a user defined type by index, IO streaming.BSL-1.0
Boost.Proto构建基于表达式模板的 EDSLs 的库
Brigand使用饿元函数,为最佳性能优化
CoMeta轻量、唯头文件的 C++14 元编程库
Meta使用饿元函数,在 metal 和 brigand 之间,相对于性能妥协
Metal使用饿元函数, 100% SFINAE 友好
refl-cppA modern compile-time reflection library for C++ with support for overloads, templates, attributes and proxies
RefurekuC++17 runtime reflection and code generation libraryMIT LicenseCMake
visit_struct小规模反射库,提供 C++11 的结构体观察器。自容纳, 100-200 行代码,取决于如何计算。

PDF

库名简述协议配置手段
HARU
JagPDF
PoDoFo

物理与模拟

库名简述协议配置手段
Bullet游戏、视觉效果、机器人及加固学习的物理模拟
HELICSCo-simulation framework for synchronizing time and exchanging data between different types of simulatorsBSD 3-Clause "New" or "Revised" LicenseCMake
ProjectCHRONO开源多物理模拟引擎
ReactPhysics3D进行 3D 模拟与游戏的 C++ 物理引擎

序列化

库名简述协议配置手段
ai-xml通过添加单个最小的函数到类,在 XML 间序列化及反序列化。在底层使用 libxml++ 。
Boost.Serialization
C++ XML objects
cerealC++11 序列化
cppcodec唯头文件库,编码/解码 base64 、 base32 和十六进制,有一致而灵活的 APIMIT
GPDSGeneral purpose data serializer to serialize objects to and from XML. Uses TinyXML under the hood.
gSOAP准确的 XML 序列化
iguanauniversal serialization engine
jiosJSON 序列化
libs11n
protobuf
rpnx-serial能(反)序列化如 std::map 、 std::vector 等类型的库
sweet_persist
ThorsSerializerJSON/YAML Input Output Streams
yaml-cpp
YASYet Another Serialization
二进制序列化
库名简述协议配置手段
binn旨在紧凑,快速且易于使用的二进制序列化库,自身是同名格式的实现。
blobifyC++17 header-only, infers the serialized layout from the structure definition alone.Boost LicenseCMake
bson-cxxBSON 格式的 C++ 实现。
fast_berHigh-performance serialization using BER/DER encoding rules. Encoding layout is defined by ASN.1 schemas. Follows modern C++ practices, written in C++11.
UBjsonCpp基于 C++14 的高性能 UBJson 读写库

排序

库名简述协议配置手段
Cpp-sortA collection of various sorting algorithms in a simple package.MIT license
IndiesortTemplated sort-wrapper function which allows use of std::sort (and other random-access sort methods) with non-random-access containers. It also increases the performance of sorting large types in random-access containers and arrayszlib license
Timsort模板化的稳定排序函数,对于逆序或半排序的数据,性能优于基于快速排序的算法,包括 std::sort 。MIT LicenseCMake

系统

库名简述协议配置手段
InfowareC++ Library for pulling system and hardware information, without hitting the command line.Creative Commons v1.0 LicenseCMake

终端

库名简述协议配置手段
cliA cross-platform header-only library for interactive command line interfaces in modern C++.BSL-1.0make, cmake, nmake, vcpkg
cwidget
replxxreadline 和 libedit 的替换品,支持 UTF-8 、语法高亮和提示。

测试

库名简述协议配置手段
banditC++11 的对人类友好单元测试
Boost.Test
Catch2
cppunit
CUTEC++ Unit Testing Easier (no reliance on static initialization for registration), integrated into Cevelop for TDDMIT License
doctest单元测试和 TDD 使用的最轻量的特性丰富的 C++ 单头文件测试框架
ELFspy杜绝假象和间谍的测试 - 仅 Linux
Google Test
lest现代的 C++11 原生的单文件唯头文件的轻量单元测试、 TDD 和 BDD 框架(包含 C++98 变体)。
liblittletest可移植,单个唯头文件的测试框架
xtd.tunitWindows 、 macOS 、 Linux 、 iOS 和 Android 上的现代 C++17 单元测试库。官方网站

文本

编码
库名简述协议配置手段
strsuiteA C++20 library to manage strings with different encodingsLGPL3.0CMake
uchardet实现猜字符串编码的功能,和python里的uchardet功能基本一样。
win-iconvLinux 和 Mac 上的字符集编码转换库 iconv 的 Windows 实现,基于 Win32 字符集转换 API 实现。
Diff/Patch
库名简述协议配置手段
diff_match_patchCreate and apply patches for strings (requires Qt)Apache 2.0 License
格式化
库名简述协议配置手段
fmtprintf 不好用,ostream 也不好用,format 好用
语法分析
库名简述协议配置手段
BNFlite仅单个头文件的轻量文法分析器库
PEGTL分析表达式文法的模板库
搜索
库名简述协议配置手段
clucene
StepUkkonen 的构建后缀树在线算法, Manber 的构建后缀数组算法。
xapian
模板引擎
库名简述协议配置手段
inja现代 C++ 的模板引擎
Jinja2C++Modern C++ implementation of Jinja2 templates

版本控制

库名简述协议配置手段
cpp-semver语义化版本号的 C++ 操作库。
LibGit2版本控制系统 Git 的核心库。

视频

库名简述协议配置手段
crystalhd
gstreamermm
libmatroska
libVLC
mjpegtools

Web

库名简述协议配置手段
Chromium Embedded
cpp-jwt
DrogonA C++14/17 based HTTP web application framework running on Linux/macOS/Unix/Windows.
libhttpserver
libkcddb
liblastfm
libmusicbrainz5
libnavajo
oatpp用于创建高性能网络服务的轻量零依赖框架
QtWebAppJava Servlets 所启发的 HTTP(s) Server ,以 C++ 实现
Tufão
uri-templateURI Templates expansion and reverse-matching for C++Apache License 2.0CMake
Wt

参阅

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1432379.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一款轻量级、高性能、功能强大的内网穿透代理服务器

简介 nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网htt…

Python学习(15)|切片slice操作

38-切片 slice 操作类似字符串的切片操作,对于列表的切片操作和字符串类似。 切片操作: 切片是Python序列及其重要的操作,适用于列表、元组、字符串等。 切片slice操作可以让我们快速提取子列表或者修改。标准格式为: [起始偏移…

QT6调用音频输入输出(超详细)

目录 一、QT6音频调用与QT5的区别 1.QAudioSource代替QAudioInput类 2.QAudioSink代替QAudioOutput类 二、音频操作中Push和Pull的区别 三、依托于Websocket实现实时对讲机 1.AudioIputDevices类 2.AudioOutputDevices类 3.实现的AudioHandler类完整内容 本人实际是要完…

深度神经网络如何启用卤化物后端以提高效率

介绍 本教程指导如何使用 Halide 语言后端在 OpenCV 深度学习模块中运行模型。Halide 是一个开源项目,它让我们以可读性强的格式编写图像处理算法,根据特定设备安排计算并以相当高的效率对其进行评估。 卤化物项目的官方网站:Halide。 最新…

Maven工程的配置及使用

一、Maven章节 Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供构建和依赖管理支持的工具 1.1、maven的作用 1)依赖管理: 方便快捷的管理项目依赖的资源包(jar包)避免版本冲突 2)统一项目结构&…

WebSocket学习笔记以及用户与客服聊天案例简单实现(springboot+vue)

一:介绍: 二:http协议与websocket对比: 三:websocket协议: 四:实现: 4.1客户端: 4.2服务端: 五:案例: 环境:做一个书店…

从0到1学Binder-环境准备

前言 终于要开始啃 binder 了,其实还没准备好,但是先走出去吧,目标是 2024 年一个整年能把 binder 学完。 我的微信公众号“ZZH的Android”,还有更多 Android 系统源码解析的干货文章等着你。 1 环境配置 Ubuntu 22.04 Cuttl…

计算机网络——03网络核心

网络核心 网络核心 网络核心:路由器的网络状态基本问题:数据怎样通过网络进行传输 电路交换:为每个呼叫预留一条专有电路分组交换 将要传送的数据分成一个个单位:分组将分组从一个路由器传到相邻路由器(hop&#xff…

Jenkins(本地Windows上搭建)上传 Pipeline构建前端项目并将生成dist文件夹上传至指定服务器

下载安装jdk https://www.oracle.com/cn/java/technologies/downloads/#jdk21-windows 下载jenkins window版 双击安装 https://www.jenkins.io/download/thank-you-downloading-windows-installer-stable/ 网页输入 http://localhost:8088/ 输入密码、设置账号、安装推…

张维迎《博弈与社会》威胁与承诺(3)承诺行为

承诺的作用 上一节,我们探讨了如何在求解博弈时把不可置信的威胁或许诺排除出去,从而对参与人的行为做出合理的预测。如前所述,其中一个隐含的前提条件是,参与人要具有理性共识。而理性共识是一个要求很高的条件,现实生…

Zoho Projects与Jira:中国市场的理想替代品之争?

在软件开发生命周期中,项目管理一直是一个非常重要的环节。为了更好地协作、追踪项目的进程和管理任务,许多公司选择了Jira这款著名的项目管理工具,它是个非常强大的工具,但是作为一款纯国外产品,他可能不适合中国市场…

Leetcode—535. TinyURL 的加密与解密【中等】

2024每日刷题&#xff08;110&#xff09; Leetcode—535. TinyURL 的加密与解密 实现代码 class Solution { public:// Encodes a URL to a shortened URL.string encode(string longUrl) {while(!urlToCode.count(longUrl)) {string code;for(int i 0; i < 6; i) {code…

Day3.

1.信号 #include <head.h> //定义自定义信号处理函数 void handler(int signo) {if(signo SIGINT){printf("按下ctrl c键\n");}return; }int main(int argc,const char *argv[]) {if(signal(SIGINT, handler) SIG_ERR){perror("error\n");return…

Codeforces Beta Round 11 D. A Simple Task 【状压DP + 环计数】

D. A Simple Task 题意 给定一个简单图&#xff08;无重边无自环&#xff09;&#xff0c;求出其中的环的数量&#xff08;一个环除了起点和终点一样以外&#xff0c;没有另外的两个相同的点&#xff09; 思路 为了区分不同的环&#xff0c;我们可以统一地用环内编号最小来区…

论文阅读-CARD:一种针对复制元数据服务器集群的拥塞感知请求调度方案

论文名称&#xff1a;CARD: A Congestion-Aware Request Dispatching Scheme for Replicated Metadata Server Cluster 摘要 复制元数据服务器集群&#xff08;RMSC&#xff09;在分布式文件系统中非常高效&#xff0c;同时面对数据驱动的场景&#xff08;例如&#xff0c;大…

oracle主库增加redo组数

redo log&#xff08;重做日志&#xff09;&#xff1a; 重做日志&#xff1a;简单来说就是&#xff0c;将oracle数据库的DML、DDL&#xff08;数据库操作语言&#xff0c;数据库定义i语言&#xff09;操作记录在日志中&#xff0c;方便恢复及备库使用&#xff0c;以组的方式管…

【消息队列】kafka整理

kafka整理 整理kafka基本知识供回顾。

yo!这里是单例模式相关介绍

目录 前言 特殊类设计 只能在堆上创建对象的类 1.方法一&#xff08;构造函数下手&#xff09; 2.方法二&#xff08;析构函数下手&#xff09; 只能在栈上创建对象的类 单例模式 饿汉模式实现 懒汉模式实现 后记 前言 在面向找工作学习c的过程中&#xff0c;除了基本…

简易计算器的制作(函数指针数组的实践)

个人主页&#xff08;找往期文章&#xff09;&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 前期思路&#xff08;菜单的制作等&#xff09;&#xff1a;利用C语言的分支循环少量的函数知识写一个猜数字的小游戏-CSDN博客 计算器的制作其实与游戏没有很大的区别。 #include <st…

JupyterLab 更换内核 使用 conda 虚拟环境

未有conda虚拟环境default先创建环境 conda create -n default python3.8 ipykernel已有conda虚拟环境default激活后安装ipykernel conda activate defaultpip install ipykernel将虚拟环境写入 jupyter notebook 的 kernel 中 python -m ipykernel install --user --name 虚…