程序员工作中经常使用的C/C++开源库

Bundle

项目地址:GitHub - r-lyeh-archived/bundle: :package: Bundle, an embeddable compression library: DEFLATE, LZMA, LZIP, BZIP2, ZPAQ, LZ4, ZSTD, BROTLI, BSC, CSC, BCM, MCM, ZMOLLY, ZLING, TANGELO, SHRINKER, CRUSH, LZJB and SHOCO streams in a ZIP file (C++03)(C++11)

Bundle是一个可以嵌入的压缩库,支持23种压缩算法和2种归档格式。它几乎将所有常见的压缩库都进行了封装,统一了接口,开发者能够调用任意自己想要的压缩库。

特性

Archive支持:.bun, .zip

Stream支持:DEFLATE, LZMA, LZIP, ZPAQ, LZ4, ZSTD, BROTLI, BSC, CSC, BCM, MCM, ZMOLLY, ZLING, TANGELO, SHRINKER, CRUSH, LZJB, BZIP2和SHOCO

在可能的情况下,优化每个压缩机的最高压缩比。

在可能的情况下,优化每个减压器的最快解压时间。

可配置、可重新分发、自包含、合并和跨平台(c++ 03)。

可选的基准基础设施(c++ 11)。

ZLIB / LibPNG许可。

Fmt

项目地址:GitHub - fmtlib/fmt: A modern formatting library

fmt是一个开源格式库,为C stdio和C++ iostream提供了一个快速安全的替代方案。

Assimp(Open Assert Import Library)

项目地址:GitHub - assimp/assimp: The official Open-Asset-Importer-Library Repository. Loads 40+ 3D-file-formats into one unified and clean data structure.

Open Asset Import Library是一个库,用于将各种3d文件格式加载到共享内存格式中。它支持40多种导入文件格式和越来越多的导出文件格式选择。

Assimp为C/C++提供了API,与其它语言(C#、Java、Python、Delphi、D)有各种绑定,也可以在Android和IOS上运行。此外,assimp具有各种网格处理工具:法线和切线空间生成,三角测量,顶点缓存局部性优化,删除退化的图元和重复的顶点,按图元类型排序,合并冗余等等。

Celero

项目地址:GitHub - DigitalInBlue/Celero: C++ Benchmark Authoring Library/Framework

Celero是C++ Benchmarking Library,简单易用。它与Google Test的架构相似,其目的是测量某段代码的性能,消除你以为是正确方案的错误。

Amalgamate

项目地址:GitHub - vinniefalco/Amalgamate: A tool for creating an amalgamation from C and C++ sources

Amalgamate是一个跨平台的命令行工具,用于将C/C++源代码进行合并。比如某个C++库有几十个.h和.cpp文件,就可以使用Amalgamate将这些.h和.cpp文件封装成一个.h和.cpp文件,这两个文件会变得非常大。现在已经有很多人使用它对其它的库进行封装。

Getopt

项目地址:GitHub - r-lyeh-archived/getopt: Simple command-line options handler (C++11)

Getopt是一个简单的命令行选项处理程序(c++ 11)。

Bgfx

项目地址:GitHub - bkaradzic/bgfx: Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.

Bgfx是一个跨平台、图形API agnostic、“自带引擎/框架”风格的渲染库。

https://repository-images.githubusercontent.com/3925242/a4566200-912a-11ea-984f-c387546a3126

支持的渲染后端:

  • Direct3D 11
  • Direct3D 12
  • GNM (only for licensed PS4 developers, search DevNet forums for source)
  • Metal
  • OpenGL 2.1
  • OpenGL 3.1+
  • OpenGL ES 2
  • OpenGL ES 3.1
  • Vulkan
  • WebGL 1.0
  • WebGL 2.0

支持的平台:

  • Android (14+)
  • iOS/iPadOS/tvOS (16.0+)
  • Linux
  • macOS (13.0+)
  • PlayStation 4
  • RaspberryPi
  • UWP (Universal Windows, Xbox One)
  • Wasm/Emscripten
  • Windows (7+)

Doctest

项目地址:GitHub - doctest/doctest: The fastest feature-rich C++11/14/17/20/23 single-header testing framework

doctest是一个新的C++测试框架,但是与其他功能丰富的替代方案相比,它在编译时间(数量级)和运行时间上都是最快的。它带来了编译语言(如D / Rust / Nim)的能力,可以直接在产品代码中编写测试,这要归功于一个快速、透明和灵活的测试运行程序,它有一个干净的接口。

Stb_image

项目地址:GitHub - nothings/stb: stb single-file public domain libraries for C/C++

Stb是一个C/C++的单文件公共领域(或MIT许可)库。它的实现全部都在头文件中,每个头文件代表一种功能的实现,在项目中直接引用头文件即可,不需要单独进行编译。

LibBF

项目地址:LibBF Library

LibBF是一个处理任意精度浮点数的小库。它的编译大小约为90 KB的x86代码,并且不依赖于其他库。它不是最快的库,也不是最小的库,但在使用渐近最优算法时,它尽量简单。基本算术运算的运行时间接近线性。

Bullet3

项目地址:GitHub - bulletphysics/bullet3: Bullet Physics SDK: real-time collision detection and multi-physics simulation for VR, games, visual effects, robotics, machine learning etc.

Bullet3是Bullet Physics SDK的官方C++源代码库,主要用于VR、游戏、视觉效果、机器人、机器学习等实时碰撞检测和多物理模拟。

Stb_truetype

项目地址:GitHub - benattal/stb-truetype-opengl-examples: C++11 examples of rendering TrueType fonts in OpenGL 3+ using stb_truetype library

Stb_truetype是一个轻量级的字体加载库,整个库只有一个头文件,在功能方面不如freetype强大,但它的代码量比freetype少很多。

Cinder

项目地址:GitHub - cinder/Cinder: Cinder is a community-developed, free and open source library for professional-quality creative coding in C++.

Cinder是一个peer-reviewed、免费的、用于创造性编码的开源C++库。Cinder支持macOS、Windows、Linux和iOS。在Mac上,它要求使用Xcode 11.3.1或更高版本进行开发,在Windows上使用Visual C++ 2019或更高版本。

Pbrt-v3

项目地址:GitHub - mmp/pbrt-v3: Source code for pbrt, the renderer described in the third edition of "Physically Based Rendering: From Theory To Implementation", by Matt Pharr, Wenzel Jakob, and Greg Humphreys.

Pbrt库保存了pbrt版本的源代码,该版本在马特·法尔、文泽尔·雅各布和格雷格·汉弗莱斯所著的《基于物理的渲染:从理论到实现》第三版中有所描述,和以之前一样,代码在BSD许可下可用。

Better-enums

项目地址:GitHub - aantron/better-enums: C++ compile-time enum to string, iteration, in a single header file

Better-enums是一个C++枚举库,比标准C++枚举更灵活和更强大,它具有清晰的语法和反射编译时枚举库,在单个头文件中,没有依赖项。

在C++ 11中,一切都可以在编译时使用。您可以转换枚举,循环遍历它们,找到它们的最大值,静态执行约定,并将结果作为模板参数或constexpr函数传递。所有的反射都可以满足元编程的需要。

C++ 98的接口也是一样的,你只需要在运行时使用它的大部分。这个库提供了有作用域和大小的枚举,这是C++ 98中没有内置的。

GLM

项目地址:GitHub - g-truc/glm: OpenGL Mathematics (GLM)

GLM是一个基于OpenGL Shading语言(GLSL)规范的图形软件的C++数学库。

GLM提供了用与GLSL相同的命名约定和功能设计和实现的类和函数,这样任何知道GLSL的人都可以在C++中使用GLM。

GLM库并不局限于GLSL的特色,一个基于GLSL扩展惯例的扩展系统,提供了扩展的能力:矩阵变换、四元数、数据打包、随机数、噪声等...

GLM库可以很好地兼容OpenGL,但它也确保了与其他第三方库和SDK的互操作性。它是软件渲染(光线跟踪/光栅化)、图像处理、物理模拟和任何需要简单方便的数学库的开发环境的良好选择。

GLM是用C++98编写,但是当编译器支持时,可以使用C++11。同时,它也是一个独立于平台的库,不依赖于任何第三方库。

Catch2

项目地址:GitHub - catchorg/Catch2: A modern, C++-native, test framework for unit-tests, TDD and BDD - using C++14, C++17 and later (C++11 support is in v2.x branch, and C++03 on the Catch1.x branch)

Catch2是一个C++的单元测试框架,但它也提供了基本的微基准测试特性和简单的BDD宏。

Catch2的主要优点是使用起来既简单又自然。测试名不需要是有效的标识符,断言看起来像普通的C++布尔表达式,提供了一种很好的本地方式来共享测试中的设置和删除代码。

比如,单元测试用例

Rapidjson

项目地址:GitHub - Tencent/rapidjson: A fast JSON parser/generator for C++ with both SAX/DOM style API

Rapidjson是一个用于C++的快速JSON解析器/生成器,具有SAX/DOM风格的API。

Uchardet

项目地址:GitHub - BYVoid/uchardet: An encoding detector library ported from Mozilla

Uchardet是一个编码检测器库,它采用未知字符编码的字节序列,不带任何附加信息,并试图确定文本的编码,返回的编码名称与图标兼容。比如,你输入一个未知编码的文本文件,uchardet能够猜测该文件的编码类型,这与Python中的uchardet库功能类似。

xxHash

项目地址:GitHub - Cyan4973/xxHash: Extremely fast non-cryptographic hash algorithm

xxHash是一种速度极快的哈希算法,在RAM速度限制下进行处理。代码是高度可移植的,并且在所有平台上产生相同的散列(小/大字节序)。

该库包括以下算法:

  • XXH32 : generates 32-bit hashes, using 32-bit arithmetic
  • XXH64 : generates 64-bit hashes, using 64-bit arithmetic
  • XXH3 (since v0.8.0): generates 64 or 128-bit hashes, using vectorized arithmetic. The 128-bit variant is called XXH128.

Docopt

项目地址:GitHub - docopt/docopt.cpp: C++11 port of docopt

Docopt是用于创建漂亮、美观的命令行界面。

Win-iconv

项目地址:GitHub - win-iconv/win-iconv: iconv implementation using Win32 API to convert.

win_iconv是一个使用Win32 API进行转换的iconv实现,通过调用win32 API实现和iconv库一样的接口功能,最终编译出的软件较小。它的主要功能是字符编码转换。

Freetype GL

项目地址:GitHub - rougier/freetype-gl: OpenGL text using one vertex buffer, one texture and FreeType

Freetype GL是一个在OpenGL中使用单个纹理和单个顶点缓冲显示Unicode的小库。

NanoVG

项目地址:GitHub - memononen/nanovg: Antialiased 2D vector drawing library on top of OpenGL for UI and visualizations.

NanoVG是一个小型的OpenGL抗锯齿矢量图形渲染库。它有精简的API,模仿HTML5画布API。它旨在成为一个实用而有趣的工具集,用于构建可扩展的用户界面和可视化。

NanoVG API是基于HTML5 canvas API建模的。如果你了解canvas,你很快就能使用NanoVG。

Swig

项目地址:GitHub - swig/swig: SWIG is a software development tool that connects programs written in C and C++ with a variety of high-level programming languages.

SWIG是一个集成了C和C++语言的编译器,包括Perl,Python,Tcl,Ruby,PHP,Java,C#,D,Go,Lua,Octave,R,Scheme (Guile,MzScheme/rack),Scilab,Ocaml。SWIG还可以将其解析树导出为XML。

Imgui

项目地址:GitHub - r-lyeh-archived/imgui: A small multiplatform immediate mode graphical user interface with OpenGL3.2 backend

Imgui是一个轻量级的、跨平台的C++图形界面框架库,主要应用在游戏行业,它的所有控件可以直接使用OpenGL/DX实现,但需要手动进行绘制;很受游戏开发者和应用程序开发者的青睐。

与传统Retained mode GUI不同,Imgui使用立即模式构建UI。

Json

项目地址:GitHub - nlohmann/json: JSON for Modern C++

在Python之类的语言中,JSON感觉就像是一级数据类型。Json库使用了现代C++的所有操作符语法,在你的代码中也能够实现同样的风格。

Spdlog

项目地址:GitHub - gabime/spdlog: Fast C++ logging library.

Spdlog是一个高性能logging库,速度快、易用性好,header-only/compiled。

比如:

Pugixml

项目地址:GitHub - zeux/pugixml: Light-weight, simple and fast XML parser for C++ with XPath support

Pugixml是一个C++ xml处理库,它由一个具有丰富遍历/修改功能的类DOM接口、一个从XML文件/缓冲区构建DOM树的速度极快的XML解析器和一个用于复杂数据驱动的树查询的XPath 1.0实现组成。它还提供了完整的Unicode支持,包括Unicode接口变体和不同Unicode编码之间的转换(这在解析/保存期间自动发生)。

由于性能和易于使用的接口,pugixml被许多项目使用,包括开源项目和专有项目。

FFTS

项目地址:GitHub - linkotec/ffts: The Fastest Fourier Transform in the South

FFTS是一个简单、快速、高度优化的傅里叶变换实现,主要提供高性能的离散傅里叶变换功能,它在音频分析、图像处理、信号处理等领域有着重要的作用。

FFTS使用线性时间复杂度算法,将实数序列或线性序列转换到频域和逆向转换,支持单精度浮点类型和双精度浮点类型,在ARM、X86和CUDA GPU平台上进行了优化。

FFTS使用分治策略的方式将大问题拆解成小的子问题,在将这些子问题进行递归,并返回最终结果。

Recastnavigation

项目地址:GitHub - recastnavigation/recastnavigation: Industry-standard navigation-mesh toolset for games

Recastnavigation为Unity,Unreal,Godot,O3DE和无数AAA和独立游戏和引擎中的AI导航功能提供了动力。

Microprofile

项目地址:GitHub - jonasmr/microprofile: microprofile is an embeddable profiler

Microprofile是一个嵌入在一些文件中的分析器,使用用C++编写。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/147133.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Datawhale X 南瓜书 task02学习笔记

算法原理引入 样本点通常应该在模型的2侧,原因:在实际中,因为某种不可控的因素,测出来的样本点肯定是有误差的。如果样本数据点都在模型上,则说明在建立模型时,把误差也考虑进去了,这就是我们说…

9月21日 电子产品世界上海站沙龙

9月21日 电子产品世界上海站沙龙 有幸参加了 9月21日 14: 00 在上海 九江路 700号 上海南新雅皇冠假日酒店 4楼 举行的 TI MSPM0 MCU开发经验交流 会 本次邀请资深开发者,现场跟大家进行TI MSPM0 MCU开发经验交流,并详细展示基于TI MSPM0 MCU开发的实用…

动态规划day39|198. 打家劫舍、213. 打家劫舍 II(环形怎么处理?)、337. 打家劫舍 III(二叉树与动态规划的完美结合!)

动态规划day39|198. 打家劫舍、213. 打家劫舍 II(环形怎么处理?)、337. 打家劫舍 III(二叉树与动态规划的完美结合!) 198. 打家劫舍213. 打家劫舍 II337. 打家劫舍 III 198. 打家劫舍 你是一个专业的小偷&…

盘点3款.NetCore(C#)开源免费商城系统

CoreShop商城 介绍 核心商城系统(CoreShop) 是基于 Asp.Net 8.0、Uni-App开发、支持可视化布局的小程序商城系统;前后端分离,支持跨平台运行;拥有分销、代理、团购秒杀、接龙、拼团、直播、优惠券、自定义表单等众多营…

为什么用迭代器调用不了对象中的函数

没加const可以 加了const就不行 我懂了 加了const v的值就不能修改,我的那些函数都可以修改值 应该是 好像不对 有大佬会吗

直通滤波-PassThrough Filter-原理-代码实现

前言 对坐标轴上的上下限进行约束,选取其中符合范围的点云区域使用场景:去除噪声点,关注特定区域,减小计算量 工作流程 假设我们要在 d d d 轴( d ∈ { x , y , z } d \in \{x, y, z\} d∈{x,y,z} )上…

yolov5足球运动分析-速度分析-足球跟踪

足球分析项目 引言 在现代体育分析领域,利用先进的计算机视觉技术和机器学习模型对比赛视频进行深入解析已成为一种趋势。本项目旨在通过YOLO(You Only Look Once)这一顶级的人工智能目标检测模型来识别并跟踪足球比赛中的球员、裁判以及足球…

软件开发详解:通过源码搭建高效的食堂采购与供应链管理平台

通过源码构建定制化的系统,能够让企业根据自身需求灵活调整功能,打造符合其业务流程的高效管理平台。接下来,小编将详细介绍如何通过源码搭建一套高效的食堂采购与供应链管理平台,并分析其在技术架构、功能实现及优化策略方面的关…

大模型入门 ch04:实现一个GPT模型

本文是github上的大模型教程LLMs-from-scratch的学习笔记,教程地址:教程链接 LLM大模型主要是参数量大,而不是代码量大。 这是本节的具体内容 首先实现一个GPT的骨架分别实现GPT骨架内的各个部分,包括LayerNorm,GELU,…

有什么好用的电容笔?2024总结apple pencil平替笔排名TOP五!

在这个信息高度发展的社会,iPad等触控设备日益普及,电容笔的市场需求也不断扩大,因为它们在一定程度上可以替代传统的笔和纸,携带它们就无需携带厚重的书本,这种环保、便捷、方便的特点吸引了越来越多的用户。但电容笔…

动态线程池(五)

动态线程池 Filter过滤器 AlarmBaseFilter NoticeBaseFilter NotifyRedisTateLimiterFilter RedisRateLimiter redis限流器 NotifierHandler DtpNotifier动态线程池通知者 Notifier通知者 关于发送Email消息的额外说明

分布式Id生成策略-美团Leaf

之前在做物流相关的项目时候,需要在分布式系统生成运单的id。 1.需求: 1.全局唯一性:不能出现重复的ID。(基本要求) 2.递增:大多数关系型数据库(如 MySQL)使用 B 树作为索引结构。…

三菱FX3U-4DA(4通道模拟量输出)使用说明

FX3U-4DA连接在FX3G/FX3GC/FX3U/FX3UC可编程控制器上,是将来自可编程控制器的4个通道的数字值转换成模拟量值(电压/电流)并输出的模拟量特殊功能模块。 1、FX3G/FX3GC/FX3U/FX3UC可编程控制器上最多可以连接8台*1(包括其它特殊功能模块的连接台数。) 2、可以对各通道…

Global Attention Decoder for Chinese Spelling Error Correction(ACL2021)

Global Attention Decoder for Chinese Spelling Error Correction(ACL2021) 一.概述 作者认为现有的纠错方法大多是基于局部上下文信息进行纠错,没有考虑句子中错词的影响。将注意力放在错误上下文信息上可能会误导并降低CSC(Chinese Spelling Correction)的整体性…

shopro前端 短信登录只显示模板不能正常切换

删掉 换成下面的代码 // 打开授权弹框 export function showAuthModal(type smsLogin) {const modal $store(modal);setTimeout(() > {modal.$patch((state) > {state.auth type;});}, 100); }

数据集 InterHand2.6M 双手交互 三维手势建模 >> DataBall

数据集 InterHand2.6M 双手交互 三维手势建模 人工智能 深度学习 >> DataBall 数据集 InterHand2.6M,双手/单手交互 ---------------------------------------------------------------------------------------------------------- Train set * Train (H):…

MybatisPlus代码生成器使用

一、前言 Mybatis逆向工程也可以生成代码,但配置太过复杂,不便于后期维护,Mybatis Plus 主动集成了代码的自动生成,用起来也很方便,两种代码自动生成我都用过,没有好坏之分,如果非要我推荐哪一…

跨游戏引擎的H5渲染解决方案(腾讯)

本文是腾讯的一篇H5 跨引擎解决方案的精炼。 介绍 本文通过实现基于精简版的HTML5(HyperText Mark Language 5)来屏蔽不同引擎,平台底层的差异。 好处: 采用H5的开发方式,可以将开发和运营分离,运营部门自…

一个安卓鸿蒙化工具

DevEco插件,为已有安卓项目鸿蒙化加速。 目前支持: 1、安卓Vector Assets转svg; 2、json转ets model; 3、kotlin model转ets model; 下载地址:andtoharplugin1.1.0 安装: deveco插件安装选硬…

傻白甜萌妹爆改成长型女主!男频番的花瓶也有高光?

“师父,师妹不是任何人的依附,也不是小琼峰的一个摆件。” 能说出这句话的男主,堪称人间清醒。 男频作品的女性塑造向来是备受瞩目的话题。“镶边”、“挂件”、“花瓶”…总有这样的标签一个个打在“她们”身上,看似暗讽&#…