awesome-modern-cpp

awesome-modern-cpp

助力开发者掌握现代C++的综合资源集锦

awesome-modern-cpp项目是一个综合性的现代C++资源集合。它包含了书籍、社区、讲座、博客和网站等多样化内容,涵盖C++11及更新标准的特性。该项目还收录了项目模板、测试框架、基准测试工具、日志库、并发编程库以及解析与序列化库等实用资源,为C++开发者提供全面的学习参考。

C++现代C++编程资源开源库学习资料Github开源项目

现代C++精选

现代C++资源集合。

目标是收集一系列资源,帮助人们学习和利用C++11及更新版本的现代C++。

贡献

要添加、删除或更改列表中的内容: 请向GitHub仓库提交pull request

书籍

要全面了解C++书籍,请参阅 Stackoverflow权威C++书籍指南和列表

社区

查找最新的C++新闻和更新:

收听最新的C++播客:

阅读最新的C++标准提案:

讨论所有与C++相关的内容:

提出您的C++问题:

也许您的问题已经在FAQ中得到了回答?:

参加众多C++会议之一:

寻找C++用户组:

演讲

TODO 整理一份关于如何使用C++11/17/20特性简化代码的优秀演讲列表

SG20教育和C++教学推荐视频开始。

博客

网站

项目启动模板

  • ModernCppStarter - 一个用于启动现代C++项目的模板,使用CMake、CI、代码覆盖率、clang-format、可重现的依赖管理等。
  • modern-cpp-template - 一个现代C++项目的模板,使用CMake、Clang-Format、CI、单元测试等,支持下游包含。
  • cmake_template - 一个模板CMake项目,帮助您开始使用C++和工具。
  • Pitchfork - Pitchfork是一组C++项目约定。

这并不是所有C和C++库的综合列表。它是具有普遍适用性(序列化、数据库、测试等)的高质量现代库,或新颖使用新C++特性的高质量库的列表。

综合 / 框架

  • abseil - Abseil是一个开源的C++代码集合(符合C++11标准),旨在扩充C++标准库。
  • Boost - C++库集合。
  • Folly - Facebook开源库。
  • POCO - POCO C++库是功能强大的跨平台C++库,用于构建可在桌面、服务器、移动、物联网和嵌入式系统上运行的网络和互联网应用程序。
  • nonstd-lite - *-lite仓库的父级,为pre-C++11环境提供迁移到post-C++11特性的路径。
  • xtd - 现代C++17/20框架,用于在Windows、macOS、Linux、iOS和Android上创建控制台(CLI)、表单(类似WinForms的GUI)和tunit(类似Microsoft单元测试框架的单元测试)应用程序。

测试

  • Approval Tests for C++ - 适用于Linux、Mac和Windows的原生C++ ApprovalTests。
  • autocheck - C++版QuickCheck和SmallCheck克隆。
  • Bandit - 一个C++11的头文件库,旨在使单元测试成为愉快的体验。
  • Boost:UT - C++20 μ(微型)/单元测试框架,单头文件,无需宏。
  • Boost.Test - Boost测试框架。
  • Catch 🔥 - 一个现代的、C++原生的、仅头文件的单元测试、TDD和BDD框架。
  • clean-test - 一个现代C++20测试框架。
  • doctest 🚀 - 最快的功能丰富的C++11/14/17/20单头文件测试框架,用于单元测试和TDD。
  • Fakeit - 简化C++模拟。一个简单但表达力强的仅头文件C++模拟库。
  • Googletest - Google测试和模拟框架。
  • Mull - 实用的C和C++变异测试工具
  • rapidcheck - C++版QuickCheck克隆。
  • snitch - 轻量级C++20测试框架。

基准测试

用于创建微基准测试的库和框架。

  • Celero - C++基准测试编写库/框架。
  • Google Benchmark 🌟 - 微基准测试支持库。
  • hayai - C++基准测试框架。
  • Nonius - C++微基准测试框架。
  • nanobench - 简单、快速、准确的单头文件C++11/14/17/20微基准测试功能

日志

  • fmtlog - 一个fmtlib风格的日志库,延迟以纳秒计。
  • spdlog - 快速的C++日志库。
  • loguru - 轻量且灵活的C++日志库

线程

  • concurrentqueue - 快速的多生产者、多消费者无锁并发队列,适用于C++11。
  • Cpp-Taskflow - 现代C++并行任务编程库
  • Junction - C++并发数据结构。
  • MPMCQueue - 用C++11编写的有界多生产者多消费者无锁队列。
  • SPSCQueue - 用C++11编写的有界单生产者单消费者无等待无锁队列。
  • Threading Building Blocks - Threading Building Blocks (TBB)是Intel开发的C++模板库,用于多核处理器上的并行编程。使用TBB,计算被分解为可并行运行的任务。该库管理和调度线程以执行这些任务。
  • execq - 智能队列,以线程池方式(串行/并发)执行任务,适用于C++11。
  • concurrencpp - 一个通用并发库,包含任务、执行器、定时器和C++20协程来管理它们。

解析和序列化

  • json 🥇 - 现代C++的JSON库。
  • jsoncpp - 用于与JSON交互的C++库。
  • toml++ - 用于解析TOML v0.5.0及更高版本的仅头文件C++17库。
  • tinytoml - 用于解析TOML的仅头文件C++11库。
  • yaml-cpp - C++的YAML解析器和生成器。
  • cpptoml - 用于解析TOML配置文件的仅头文件库。
  • cereal - C++11序列化库。
  • cista - C++17高性能零拷贝二进制序列化库。
  • simdjson - 使用常用SIMD指令加速JSON解析
  • Boost.JSON - 支持自定义分配器的JSON库。
  • hjson-cpp - 用于读写Hjson和/或JSON文件的C++11库。
  • json_struct - 高性能、单头文件JSON解析器,直接解析到C++结构体。
  • daw_json_link - C++中快速、方便的JSON序列化和解析

字符串格式化和模板

  • {fmt} - 小型、安全、快速的格式化库。
  • Inja - 现代C++的模板引擎。
  • Mustache - C++11的Mustache文本模板。
  • tinyformat.h - 最小的、类型安全的C++ printf替代库。
  • pprint - 现代C++的美化打印器。

脚本

  • sol2 - C++绑定Lua的库。
  • ChaiScript - 易于使用的C++嵌入式脚本语言。
  • pybind11 - C++11和Python之间的无缝操作性。

Web / HTTP

  • Beast - 基于Boost.Asio的C++11 HTTP和WebSocket库。
  • cpprestsdk - C++ REST SDK是微软的项目,用于原生代码中基于云的客户端-服务器通信,使用现代异步C++ API设计。该项目旨在帮助C++开发者连接和与服务交互。
  • cpr - C++ Requests:适合人类使用的Curl,Python Requests的精神移植版。
  • Crow - 快速且易用的微框架,用于创建Web服务器(受Python Flask启发)。
  • dmbcs-micro-server - 基于C++20的JSON、HTML、文本和PNG over HTTP;将服务器嵌入应用程序以提供基于Web的UI的简单方法。
  • Drogon - 基于C++14/17的高性能HTTP应用框架
  • oat++ - 高性能Web框架(C++11,零依赖)。
  • pistache - 优雅的C++ REST框架。
  • restbed - Restbed框架为C++11应用程序带来异步RESTful功能。

数据库

  • mongo-cxx-driver - MongoDB的C++驱动程序。
  • redox - 现代、异步且超快的C++11 Redis客户端。
  • sqlite_orm - 强大的仅头文件SQLite3 ORM库,适用于C++14。
  • sqlite3pp - SQLite3 API的C++封装。
  • sqlpp11 - C++的类型安全SQL模板库。
  • libpqxx - PostgreSQL的官方C++客户端API。
  • TinyORM - 现代C++ ORM库。

BioC++

  • SeqAn - 用于序列分析的现代C++库(C++17,C++20)。

杂项

  • ASAP - 用于解析、显示、操作和迭代日期的仅头文件库。
  • BigIntegerCPP - 一个C++11大整数库,具有高效的性能、简单的本质和清晰的设计。
  • CAF - C++中Actor模型的开源实现。
  • Cinder - Cinder是一个用于C++专业质量创意编码的免费开源库。
  • Conduit - 基于协程TS的高性能流。
  • cppitertools - C++14的itertools(python)实现
  • cxxopts - 轻量级C++命令行选项解析器。
  • date - 基于C++11/14/17 <chrono>头文件的日期和时间库。
  • docopt.cpp - docopt创建漂亮的命令行界面。
  • EnTT - 一个仅头文件、快速且可靠的现代C++实体组件系统(ECS)。
  • Font Chef - 用于处理字体和渲染文本的C99和C++14库
  • HashLibPlus - 一个C++11库,提供了易于使用的接口,用于计算字符串、文件、流、字节数组和未类型化数据等的哈希和校验和。它还支持增量哈希。
  • IntX - IntX任意精度整数库的C++11移植版,具有约O(N * log N)的乘法/除法算法实现速度。
  • iod - C++14的元编程实用工具。
  • Magic Enum - 现代C++的枚举静态反射(转字符串、从字符串、迭代),适用于任何枚举类型,无需任何宏或样板代码。
  • Wise Enum - 类似Magic Enum的枚举静态反射,但适用于C++ 11/14/17。
  • Nameof - 一个仅头文件的C++17库,提供nameof宏和函数,用于获取变量、类型、函数、宏和枚举的简单名称。
  • PEGTL - 解析表达式文法模板库(C++11,仅头文件)。
  • random - 一个简单、方便、仅头文件的现代C++随机数库。
  • rang - 一个简单、现代且仅头文件的C++11库,用于终端中的颜色。
  • range-v3 - C++11/14/17的实验性范围库。
  • SimpleBaseLib4CPP - 一个简单的C++11基础编码库,目前支持编码和解码各种基础,如Base16、Base32(各种变体)、Base58(各种变体)、Base64(各种变体)。[MIT]
  • simple_match - C++14的简单仅头文件模式匹配库。
  • SRL-CPP - 一个用C++11编写的简单正则表达式语言构建库,提供了一个易于使用的接口,用于构建简单和复杂的正则表达式。[MIT]
  • tweeny - 一个仅头文件的插值库,包含30多种缓动函数。
  • Vireo - Twitter开发的轻量级多功能视频处理库。
  • indicators - 现代C++的活动指示器。
  • AssociatedEnum - C++的仅头文件库,用于带有关联值的枚举。
  • openFrameworks - 一个用于创意编码的开源C++工具包。
  • tabulate - 现代C++的表格制作工具。

工具

杂项

  • clang-format 🌟 - 一个格式化C++代码的工具。
  • clangd - 理解你的C++代码并为你的编辑器添加智能功能:代码补全、编译错误、跳转到定义等。
  • Compiler Explorer - 交互式探索C++代码的汇编输出。
  • cquery - 支持数百万行代码库的C/C++语言服务器,由libclang提供支持。支持Emacs、Vim、VSCode和其他支持语言服务器协议的编辑器。提供交叉引用、补全、诊断、语义高亮等功能(自2018年11月27日起不再更新)
  • ccls - 支持交叉引用、层次结构、补全和语义高亮的C/C++/ObjC语言服务器,从cquery分叉而来,正在积极开发中
  • irony-mode - 由libclang驱动的Emacs C/C++次要模式。
  • modern-cpp-font-lock-mode - Emacs中现代C++的语法高亮支持

动态分析

  • sanitizers 🌟 - 这个项目是Sanitizers的家:AddressSanitizer、MemorySanitizer、ThreadSanitizer、LeakSanitizer等。
  • Valgrind - 是一个用于构建动态分析工具的instrumentation框架。有Valgrind工具可以自动检测许多内存管理和线程错误,并详细分析你的程序。你还可以使用Valgrind构建新工具。

静态分析

  • cppcheck - 是一个C/C++代码的静态分析工具。它提供独特的代码分析以检测bug,并专注于检测未定义行为和危险的编码结构。
  • clang-tidy 🌟 - 是一个基于clang的C++"linter"工具。其目的是提供一个可扩展的框架,用于诊断和修复典型的编程错误,如风格违规、接口误用或通过静态分析可以推断出的bug。clang-tidy是模块化的,并提供了一个便捷的接口来编写新的检查。
  • clang-analyzer - 是一个源代码分析工具,可以找出C、C++和Objective-C程序中的bug。它基于符号执行技术实现了路径敏感、过程间分析。

模糊测试

  • American fuzzy lop - American fuzzy lop是一个面向安全的模糊测试器。
  • hongfuzz - 一个面向安全、反馈驱动、进化的、易于使用的模糊测试器,具有有趣的分析选项。
  • libFuzzer - 一个用于覆盖率引导模糊测试的库。

构建系统

  • Bazel - 是一个快速、可扩展、多语言和可扩展的构建系统。
  • build2 - 是一个用于开发和打包C和C++代码的跨平台构建工具链。
  • CMake 🌟 - 用于构建、测试和打包软件的跨平台工具集。
  • Meson - 是一个开源构建系统,旨在既极快又尽可能用户友好。
  • XMake - 是一个基于Lua的跨平台构建工具。

包管理

  • Buckaroo - 完全去中心化的C++及其他语言的多语言包管理器
  • cget - CMake包获取工具。
  • conan - C/C++包管理器。
  • CPM - 一个用于无需设置的跨平台依赖管理的CMake脚本。
  • Hunter - 跨平台C++包管理器。
  • vcpkg - 适用于Windows、Linux和MacOS的C++库管理器
  • xrepo - 基于Xmake的跨平台C/C++包管理器。

关于

这个列表由Erik Rigtorp在C++社区的帮助下编译:

编辑推荐精选

讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

TRELLIS

TRELLIS

用于可扩展和多功能 3D 生成的结构化 3D 潜在表示

TRELLIS 是一个专注于 3D 生成的项目,它利用结构化 3D 潜在表示技术,实现了可扩展且多功能的 3D 生成。项目提供了多种 3D 生成的方法和工具,包括文本到 3D、图像到 3D 等,并且支持多种输出格式,如 3D 高斯、辐射场和网格等。通过 TRELLIS,用户可以根据文本描述或图像输入快速生成高质量的 3D 资产,适用于游戏开发、动画制作、虚拟现实等多个领域。

下拉加载更多