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++社区的帮助下编译:

编辑推荐精选

Trae

Trae

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

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

热门AI工具生产力协作转型TraeAI IDE
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

聊天机器人AI助手热门AI工具AI对话
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
讯飞星火

讯飞星火

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

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

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

Spark-TTS

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

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

咔片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 的技术优势。

下拉加载更多