Awesome C++资源大全

摘要:C++是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。

本文是关于 C++ 框架、库和资源的一些汇总列表,由 fffaraz发起和维护,并追加本人学习工作中地图技术研究相关的库。内容包括:标准库、框架、人工智能、异步事件和循环、音频、生物学、BitTorrent、命令行界面、压缩、并发性、配置文件、容器、。注:部分资源链接需要外部网络。(2019-12-01版本)

标准库(Standard Libraries)

  • C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。
  • Standard Template Library:标准模板库。(STL)
  • C POSIX library:POSIX系统的C标准库规范。
  • ISO C++ Standards Committee:C++标准委员会。
  • The GNU C Library:GNU系统核心库。

框架

C++通用框架和库

  • abseil-cpp:Abseil C++ 通用库。[Apache2]
  • Apache C++ Standard Library:是一系列算法,容器,迭代器和其他基本组件的集合。 [Apache2]
  • APR:一个实用程序函数库,有跨平台、可移植、运行时的特点,由Apache开发。[Apache2]
  • ASL:Adobe源代码库提供了同行的评审和可移植的C++源代码库。[MIT]
  • Boost:大量通用C++库的集合。[Boost]
  • BDE:来自于彭博资讯实验室的开发环境。[Apache2]
  • Cinder:提供专业品质创造性编码的开源开发社区。[BSD]
  • Cxxomfort:轻量级的,只包含头文件的库,将C++ 11的一些新特性移植到C++03中。[MIT]
  • Dlib:使用契约式编程和现代C++科技设计的通用的跨平台的C++库。[Boost]
  • EASTL:EA-STL公共部分。[BSD]
  • ETL:[MIT]
  • ffead-cpp:企业应用程序开发框架。[Apache2]
  • Folly:由Facebook开发和使用的开源C++库。[Apache2]
  • FunctionalPlus:C++的函数编程库,编写简洁易读的C++代码。[MIT]
  • GLib:GLib为用C编写的库和应用程序提供核心应用程序构建块。[LGPL]
  • JUCE:包罗万象的C++类库,用于开发跨平台软件。[ISC]
  • libPhenom:用于构建高性能和高度可扩展性系统的事件框架。[Apache2]
  • LibSourcey:用于实时的视频流和高性能网络应用程序的C++11 evented IO。[LGPL]
  • LibU:C语言写的多平台工具库。[BSD]
  • Loki:C++库的设计,包括常见的设计模式和习语的实现。[MIT]
  • MiLi:只含头文件的小型C++库。[Boost]
  • OpenFrameworks:开发C++工具包,用于创意性编码。[MIT]
  • Qt:跨平台的应用程序和用户界面框架。[GPL/LGPL/Commercial]
  • Reason:跨平台的框架,使开发者能够更容易地使用Java,.Net和Python,同时也满足了他们对C++性能和优势的需求。[GPL2]
  • ROOT:具备所有功能的一系列面向对象的框架,能够非常高效地处理和分析大量的数据,为欧洲原子能研究机构所用。[LGPL]
  • STLport:是STL具有代表性的版本。[Free]
  • STXXL:用于额外的大型数据集的标准模板库。[Boost]
  • tbox:一个类似glib的多平台c库。[Apache2]
  • Ultimate++:C++跨平台快速应用程序开发框架。[BSD]
  • uSTL:轻量级C++ STL库。[MIT]
  • Windows Template Library :用于开发Windows应用程序和UI组件的C++库。[Public]
  • Yomm2:C++11的开放multi-methods。[Boost]

人工智能(Artificial Intelligence)

  • ANNetGPGPU:一个基于GPU(CUDA)的人工神经网络库。[LGPL]
  • btsk:游戏行为树启动器工具。[zlib]
  • Evolving Objects:基于模板的,ANSI C++演化计算库,能够帮助你非常快速地编写出自己的随机优化算法。[LGPL]
  • frugally-deep:Keras模型C++库,仅由头文件。[MIT]
  • Genann:C语言中的简单神经网络库。[zlib]
  • MXNet:简单轻量级的C语言神经网络库,具有可移植,灵活的分布式、移动深度学习,动态的、可变异的数据流的特点;适用于Python、R、Julia、Scala、Go、Javascript。
  • PyTorch:Python版本,基于强GPU加速的张量和动态神经网络。
  • Recast/Detour:(3D)导航网格生成器和探路器,主要用于游戏。[zlib]
  • TensorFlow:用数据流图进行数值计算的开源软件库。[Apache]
  • CNTK:Microsoft认知工具包(CNTK),一个开源的深度学习工具包。[Boost]
  • tiny-dnn:C++11中的一个仅头的无依赖性深度学习框架。[BSD]
  • Veles:面向快速深度学习应用开发的分布式平台。[Apache]
  • Kaldi: 语音识别工具包。[Apache]

异步事件循环

  • Asio:一个跨平台的C++库,用于网络和低级I/O编程,为开发人员提供一致的异步模型。[Boost]
  • Boost.Asio:用于网络和底层I/O编程的跨平台的C++库。[Boost]
  • C++ Actor Framework:Actor模型在C++中的开源实现。[BSD-3-Clause]
  • libev:功能齐全,高性能的时间循环,轻微地仿效libevent,但是不再像libevent一样有局限性,也修复了它的一些bug。[BSD and GPL]
  • libevent:事件通知库。[BSD]
  • libuv:跨平台异步I/O。[BSD]
  • promise-cpp:标准Promise/A+的C++实现。[Anti-996]
  • uvw:libuv的C++封装。[MIT]

音频

音频,声音,音乐,数字化音乐库

  • FMOD:易于使用的跨平台的音频引擎和音频内容的游戏创作工具。[Free for non-commercial/Commercial]
  • KFR:快速,C++DSP框架,FFT,FIR/IIR滤波器,采样率转换。[GPL/Commercial]
  • libsndfile:带有C++封装的C库,用于通过一个标准库接口读写包含采样声音的文件。[LGPL-2.1]
  • libsoundio:用于实时跨平台音频输入和输出的C库。[MIT]
  • Maximilian:C++音频和音乐数字信号处理库。[MIT]
  • OpenAL:开源音频库—跨平台的音频API。[BSD/LGPL/Commercial]
  • miniaudio:单文件音频播放和捕获库。[Unlicense]
  • Opus:一个完全开放的,免版税的,高度通用的音频编解码器。[BSD]
  • PortAudio:一个免费的、跨平台的、开源的音频I/O库。[MIT]
  • SELA:简单无损音频。[MIT]
  • SoLoud:简易便携式游戏音频引擎。[zlib]
  • Speex:免费编解码器,为Opus所废弃。[BSD]
  • Tonic:C++易用和高效的音频合成。[Unlicense]
  • Vorbis:一种完全开放的、非专有的、无专利和版税的通用压缩音频格式。[BSD]
  • minimp3:仅头文件的MP3解码器,with clean-room实现。[CC0]
  • Verovio:Ogg Vorbis是一种完全开放的,非专有的,免版税的通用压缩音频格式。[BSD]
  • Wav2Letter++:一个完全用C++编写的快速开源语音处理工具包,使用ArrayFire tensor库和flashlight机器学习库以获得最大的效率。[BSD]

生物学(Biology)

生物信息,基因组学和生物技术

  • BioC++:生物信息学的C++计算文库。[BSD]
  • Chaste:一个开源C++库,用于计算生理学和生物学的数学模型。[BSD]
  • libsequence:用于表示和分析群体遗传学数据的C++库。[GPL]
  • SeqAn:专注于生物数据序列分析的算法和数据结构。[BSD/3-clause]
  • Vcflib:用于解析和处理VCF文件的C++库。[MIT]
  • Wham:直接把联想测试应用到BAM文件的基因结构变异。[MIT]

BitTorrent协议(BitTorrent)

  • jech/dht:BitTorrent DHT C库。[MIT]
  • libtorrent:(又名BorTorrent RestorBar)一个高效完整的C++ BitTorrent实现。[BSD]
  • LibTorrent:(又名libtorrent rakshasa)BitTorrent库。[GPL]
  • libutp:uTorrent传输协议库。[MIT]

命令行界面(Command-Line Interface)

控制台/终端用户界面,命令行界面

  • Argh:一个极简的、无挫折感的、仅头头文件的参数处理程序。[BSD]
  • Taywee/args:一个简单的仅头文件的C++参数解析器库。[MIT]
  • Boost.Program_options:通过命令行和配置文件等常规方法获得程序选项的库。[Boost]
  • Clara:一个简单易用的、可组合的、命令行解析器,用于C++ 11及其以上。[BSL-1.0]
  • cli:交互式命令行接口的,跨平台仅有头文件的C++ 14库(Cisco style)。[Boost]
  • CLI11:仅头文件的,简单或复杂的命名行参数解析C++11库。[BSD]
  • jarro2783/cxxopts:轻量级C++命令行选项解析器。[MIT]
  • docopt.cpp:从字符串解析生成选项解析器的库。[Boost]
  • gflags:C++命令行参数库。[BSD]
  • linenoise:readline和libedit的一种小型的独立替代品。[BSD-2-Clause]
  • linenoise-ng:一个小型的、可移植的GNU readline替代品,用于Linux、Windows和MacOS,能够处理UTF-8字符。[BSD]
  • Lyra:一个简单易用的、可组合的、命令行解析器,用于C++ 11及其以上。[Boost]
  • Ncurses:终端用户界面。[MIT]
  • PDCurses:源代码和预编译库都可用的公共域库,支持UTF-8、语法突出显示,可替换readline和libedit库,适用于Unix和Windows。[PublicDomain]
  • TCLAP:一个成熟、稳定且功能丰富的库,用于定义和访问ANSI C++中的命令行参数。[MIT]
  • termbox:用于编写基于文本的用户界面的C库。[MIT]

压缩

  • bit7z:一个C ++静态库,为7-zip DLL提供一个简洁的接口。[GPLv2]
  • Brotli:Brotli压缩格式,由谷歌开发。[MIT]
  • bzip2:一个完全免费,免费专利和高质量的数据压缩。[BSD]
  • FiniteStateEntropy:新一代熵编解码器,有限状态熵和Huff0。
  • PhysicsFS:对各种归档提供抽象访问的库,主要用于视频游戏,设计灵感部分来自于Quake3的文件子系统。[zlib]
  • KArchive:用于创建,读写和操作文件档案(例如zip和 tar)的库,它通过QIODevice的一系列子类,使用gzip格式,提供了透明的压缩和解压缩的数据。[LGPL]
  • libarchive:多格式存档和压缩库。[BSD]
  • LZ4:非常快速的压缩算法。[BSD]
  • LZFSE:压缩与命令行工具库,由苹果开发。
  • LZHAM:无损压缩数据库,压缩比率跟LZMA接近,但是解压缩速度却要快得多。[BSD]
  • LZMA:7z格式默认和通用的压缩方法。[PublicDomain]
  • LZMAT:及其快速的实时无损数据压缩库。[GPL]
  • miniz:单一的C源文件,紧缩/膨胀压缩库,使用zlib兼容API,ZIP归档读写,PNG写方式。[MIT]
  • Minizip:Zlib最新bug修复,支持PKWARE磁盘跨越,AES加密和IO缓冲。[zlib]
  • smaz:轻量级字符串压缩库。[BSD]
  • Snappy:快速压缩和解压缩。[BSD]
  • ZLib:非常紧凑的数据流压缩库。[zlib]
  • zlib-ng:zlib的下一代系统,更新了一些重要的优化。[zlib]
  • zstd:Z标准-快速实时压缩算法,由Facebook开发。[BSD]
  • ZZIPlib:提供ZIP归档的读权限。[MPL/LGPL]

并发性

并发执行和多线程

  • alpaka:并行内核库。[LGPLv3+]
  • ArrayFire:通用GPU库。[BSD]
  • Async++:一个轻量级C++ 11并发框架,灵感来自于微软PPL库和N328 C++标准提案。[MIT]
  • Boost.Compute:用于OpenCL的C++GPU计算库。[Boost]
  • Bolt:针对GPU进行优化的C++模板库。[Apache2]
  • ck:并发原语、安全内存回收机制和非阻塞数据结构。[BSD]
  • concurrentqueue:一个快速多生产者,多用户无锁并发队列的C++ 11。[BSD,Boost]
  • Cpp-Taskflow:具有任务依赖性的快速C++并行编程。[MIT]
  • CUB:CUB为CUDA编程模式的每一层提供了最先进、可重用的软件组件。[BSD]
  • cupla:C++ API, 通过Alpaka,在OpenMP、线程、TBB、……上运行CUDA/C++。[LGPLv3+]
  • C++React:用于C++11的反应性编程库。[Boost]
  • FiberTaskingLib:基于任务的多线程库,支持具有任意依赖性的任务图。[Apache]
  • Intel Games Task Scheduler:专为游戏开发人员需求而设计的任务计划框架。[MIT]
  • Intel Parallel STL:英特尔C ++ 17 STL for C ++ 11及更高版本的实现。[Apache2]
  • Intel TBB:Intel线程构件块。[Apache2]
  • junction:并发数据结构的C ++库。[BSD]
  • libcds:并发数据结构的C ++库。[BSD]
  • Libclsph:基于OpenCL的GPU加速SPH流体仿真库。[MIT]
  • libdill:在C中引入结构化并发。[MIT]
  • libdispatch:苹果公司开发的Grand Central Dispatch(GCD)是基于线程池模式的任务并行技术。 libdispatch是一个提供GCD服务实现的库。[Apache-2.0]
  • libmill:在C语言中引入Go风格的并发。[MIT]
  • moderngpu:用于GPU上通用计算的生产力库。它是为CUDA编写的仅有头文件的C ++库。该库的独特价值在于其用于解决不规则并行问题的加速原语。[FreeBSD & Copyright, Sean Baxter]
  • NCCL:用于多GPU通信的优化原语。[BSD]
  • OpenCL:并行编程的异构系统的开放标准。
  • OpenMP:OpenMP API。
  • RaftLib:通过C++类操作符实现的C++库、流/数据流并发。[Apache2]
  • readerwriterqueue:一种快速的单生产商单用户锁空闲队列。[BSD]
  • Thrust:类似于C++标准模板库的并行算法库。[Apache2]
  • transwarp:用于任务并发,只有头文件C++库。[MIT]
  • HPX:用于任何规模的并行和分布式应用程序的通用C++运行时系统。[Boost]
  • VexCL:用于OpenCL/CUDA 的C++向量表达式模板库。[MIT]
  • Quantum:一个强大的C++协同程序调度框架,构建在boost::coroutines2.。

配置文件

配置文件,ini文件

  • inih:C版本.INI文件解析器,简单,非常适合嵌入式系统。[BSD-3-Clause]
  • inih:C++版本.INI文件解析器。[BSD-3-Clause]
  • iniparser:.INI文件解析器。[MIT]
  • libconfig:C/C++库用于处理结构化的配置文件。[LGPL-2.1]
  • libconfuse:C版本小型配置文件分析器库。[ISC]
  • simpleini:跨平台的C++库,提供了一个简单的API来读取和写入ini样式的配置文件。[MIT]

容器

  • C++ B-tree:基于B树数据结构,实现命令内存容器的模板库。[Apache2]

你可能感兴趣的:(地图技术,软件开发,人工智能,大数据,C++)