Project Icon

awesome-modern-cpp

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

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

现代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 头文件的日期和时间库。
  • 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++社区的帮助下编译:

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号