现代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++教学推荐视频开始。
博客
网站
项目启动模板
库
这并不是所有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单元测试框架的单元测试)应用程序。
测试
基准测试
用于创建微基准测试的库和框架。
日志
线程
解析和序列化
字符串格式化和模板
脚本
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功能。
数据库
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++的表格制作工具。
工具
杂项
- 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。它基于符号执行技术实现了路径敏感、过程间分析。
- 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++社区的帮助下编译: