首页 > 编程语言 >不容错过的 13 个顶级 C++ 程序库

不容错过的 13 个顶级 C++ 程序库

时间:2023-12-18 22:23:26浏览次数:42  
标签:13 C++ 标准 开源 程序库 Boost 链接

不容错过的 13 个顶级 C++ 程序库

不容错过的 13 个顶级 C++ 程序库

Incredibuild Incredibuild 已认证账号   135 人赞同了该文章

关于 C++,不论是其长达 40 年的发展历史,或者 C++ 是高级还是低级编程语言的争论等等,这些内容都已老生常谈。如果你对 C++ 库有所研究,不用我多说,大家也都心中有数。C++ 库的发展已久,积累了多种多样的程序库,让现代系统开发如虎添翼。对个别 C++ 库,大家估计已有所了解,甚至可能清楚地知道它们的奇特之处。

不过,正因为 C++ 历史悠久,社区力量庞大,资源多而杂,让人眼花缭乱。因此,所以选择正确的 C++ 库是个不小的挑战。当然,本文的目的不是深入研究各个 C++ 库,而是向大家介绍我认为在目前以及未来会发挥重要力量的程序库。

C++ 标准库 – 精华中的精华

一提到 C++ 标准库,马上就会想到 STL。作为 C++ 标准语言的一部分,C++ 标准库不仅是编程语言,更是标准的程序库资源,且由国际标准化组织(ISO)监督制定。点击链接,可以直接找到目前最新的 C++ 版本及其标准库。

  广告 C++ 编译加速慢?点击获取解决方案  



FileSystem 库,则提供了对文件系统及其组件(如路径、目录和常规文件)执行操作的工具。在 C++ 14 中,这个库还只是试验性的产品,而到 C++ 17,则成为了标准库的一部分。准确地说,命名空间由 std::experimental::filesystem 变成了 std::filesystem。 使用标准库内的工具总是最好的,因为行为可以在不同平台得到广泛地定义,只要平台支持 C++。

那么,STL 呢?标准模板库是处理容器、迭代器和算法的标准库子集。STL 是一个通用库,帮助用现代高效算法管理数据集合。我认为 C++ 标准库,包括 STL,都是 C++ 程序员的日常必备。

Boost

当然,Boost 也必须在清单之内。我在上一节讨论了 FileSystem 库,其实,FileSystem 库是以 Boost FileSystem 库为基础建立的。在 C++ 标准库中,有许多其他的实例都使用了 Boost 库,这也充分证明了 Boost 的实力。Boost 是一个免费、开源、经过专家评审的库,受 Boost 软件协议管理,可以较为自由地使用。Boost 在行业口碑很好,由多个开发师编写,其中包含支持线性代数、伪随机数生成、多线程、图像处理、正则表达式、字符串和文本处理和单元测试等多种代码包。但其缺陷在于,Boost 本身庞大而复杂,使用门槛较高。另外,链接到 Boost 会导致可执行文件的大小增加。

Poco

POCO C++ 库,兼具易用性和性能优越的特点,是一个强大的跨平台 C++库。Poco 代表便携式组件,提供一些特定的功能,如:构建以网络为中心,或者以网络为基础的便携式应用程序。Poco 库具有模块化的特点,因此非常适合嵌入式开发(在物联网、汽车、安全、工业自动化等行业)。在许可协议方面,Poco 有一个开源版本,由 Boost software license 1.0 授权。另外还有一个订阅的专业版本,提供商业源代码许可。你可以从 GitHub 下载 POCO

OpenSSL

OpenSSL 是网络安全、加密的利刃。其 libcrypto 组件中包含了通用的高强度加密例程,libssl 组件可实现所有 TLS 协议。OpenSSL 是一个 C 语言库,但它在加密应用程序中非常重要,因此我将它包括在这里。一般来说,程序库的一个小小漏洞很少会被注意,也更不可能有它自己的专属网页。但是,OpenSSL 的“滴血之心”(Heartbleed Bug)漏洞造成的恐慌几乎席卷全球,具体信息,可以点击链接阅读。

FFmpeg

如果你需要任何处理音频和视频,你就会用到 FFmpeg。除了提供 ffmpeg 这个命令行可执行文件外,该项目还包括一组高质量库,用于音频/视频编解码器的编码和解码、多媒体容器格式的解复用器和多路复用器、媒体文件管理器、图像缩放和颜色空间格式转换操作等。FFmpeg 是一个免费的开源库,在 GNU LGPL V2.1 许可下发布。

SQLite

SQLite 是一种 C 语言库,并实现了一个功能齐全、自包含、与 ACID 兼容的 SQ L数据库引擎。SQLite 是世界上使用最多的数据库引擎,其重要性不言而喻。SQLite 的源代码是公开的,大家都可以免费使用。SQLite 的使用也很特别,通常通过 Amalgamation 这个源代码文件编译到客户机应用程序中。

Dear ImGui

Dear ImGui 是一个出色的图形用户界面 C++ 库,使用 Dear ImGui 的应用程序数据可以证明其性能优越。Dear ImGui 兼具快速、可移植、兼容且独立的特点。其设计目标是简单和高效,因此尤其适合游戏引擎、沉浸式 3D 应用程序、全屏和嵌入式应用程序。Dear ImGui 是开源的 C++ 库,提供免费的许可,可通过链接下载

现代 C++ JSON 库

现代 C++ JSON 库,是可在 C++ 中使用的 JSON 单个头文件,这也是我用过的 JSON 最好的程序库。语法简单直接,且使用 MIT 许可。因为这是一个只有头文件的库,并且只是一个 json.hpp 头文件,因此,集成相当轻便、简单。

GoogleTest

很多 C++ 程序员更喜欢用 GoogleTest 进行单元测试。GoogleTest 是一个开源的、维护良好的 xUnit 测试框架和C++库,其中包括一个模拟框架,非常适合执行左移战略的企业。

Eclipse Mosquitto

如果你需要在 C++ 中使用 MQTT 协议,你就会用到 Eclipse Mosquitto。MQTT 是一种轻量、高效的协议,需要的资源极少,因此适合像小型微控制器这样的低功耗设备。MQTT 的体系结构可以是发布或订阅,其中,MQTT 客户机与 MQTT 代理直接对话。Eclipse Mosquitto 库为发布者和订阅者提供了实用程序,具体资源可从链接下载



OpenCV

关于 Open CV,我只有赞美之词(可参考之前的博客《CMake、OpenCV 和单元测试》)。用于图像处理和计算机视觉的 C++ 库不计其数,但都比不上 OpenCV 的通用性。OpenCV 具有实时的计算机视觉、机器学习和用于人脸识别、目标检测和 3D 模型提取的深度学习库。OpenCV 库成熟、完善,拥有 Apache 开放源码许可。

oneAPI Threading Building Blocks

Threading Building Block 库现在是开源的,并更名为oneAPI Threading Building Blocks (oneTBB)。这个程序库可帮助并行 C++ 程序,充分利用多核处理器,这些处理器便携、易于组合且具有发展潜力。OneTBB 也提供 Apache 开放源码许可,具体信息可查看链接

Tensorflow

除非你在过去五年与世隔绝,否则你肯定听说过 Tensorflow。这是一个用 C++ 编写的机器学习框架,包括杰出的 C++ 库资源,可用于开发机器学习模型中的许多常见任务。Tensorflow 最初是由 Google Brain 团队的研究人员开发的,他们当时负责研究机器学习和深层神经网络问题。Tensorflow 有一个开放源码 Apache 2.0 许可,点击链接可以获取。

  广告 加速C++编译,获取Incredibuild免费License  



C++ 库,你值得拥有!

我喜欢 C++,是因为丰富的功能,这也是它成为企业级编程语言的底气。最重要的是,我喜欢 C++系统提供的多种程序库,让开发变得简单轻松。我承认,我也喜欢库的概念。C++ 库可帮助重复利用代码,这对于企业生产效率、代码质量都是不可或缺的,C++ 生产效率,同时也是 Incredibuild 最为重视的部分。君子善假于物也,编码也是,这些精美的代码资源,就是你高效编码的利器。您可以点击链接获取 Incredibuild 的试用 License
当然,很多其他优秀的程序库(比如 GTK+、WxWidgets、Vulcan、ATL、JUCE、HandBrake 等等),我还来不及介绍。这个 C++ 库的清单永无止境,但我的时间有限。文中列举的 C++ 库是我个人很喜欢的,大家也可以使用网站 http://cppreference.com 进行选择。
不管你是需要 GUI、机器学习、数学函数、音频、公共类,还是你能想到的任何门类,我都已经竭尽所能把最顶级的 C++ 程序库资源分享给大家了,希望能有所帮助。
C++ 万岁!?



编辑于 2023-11-06 15:36・IP 属地四川

标签:13,C++,标准,开源,程序库,Boost,链接
From: https://www.cnblogs.com/sexintercourse/p/17912509.html

相关文章

  • 12.13
    UserMapperpackagecom.example.mapper;importcom.example.pojo.Agent;importcom.example.pojo.Customer;importcom.example.pojo.House;importcom.example.pojo.Users;importorg.apache.ibatis.annotations.*;importjava.util.List;@Mapperpublicinterf......
  • 11.13
    今天完成了一个分级测试,主要功能如下:(1)能够在Tomcat服务器中正确部署,并通过浏览器查看;(2)网站页面整体风格统一;(3)首页(登录页)要求实现不同用户登录后,进入的功能页不相同。(4)教师功能页:有添加课程、修改个人信息、浏览选课学生信息三个模块。(5)学生功能页:有修改个人信息、浏览课程......
  • cpp: enum in C,C++
    C:C11以上第一种方式:/***@fileduLangMap.h*@authorgeovindu,GeovinDu([email protected])*@briefvscodec11*@version0.1*@date2023-12-18**@copyrightCopyright(c)站在巨人的肩膀上StandingontheShouldersofGiants2023**/#ifnd......
  • C++图的邻接表创建
    C++图的邻接表存储结构typedefstructNode{ intnextVex; structNode*next; }*node;structHeadNode{ Eelement; structNode*next;};typedefstructGraphTable{ intvex,edge; structHeadNodeVertex[MAXV];}*Graph;图的创建函数Graphcreate(){ Grap......
  • 29道C++ 面向对象高频题整理(附答案背诵版)
    1、什么是类?在C++中,类是一种用户定义的数据类型,它可以包含数据成员和函数成员。数据成员用于存储与类相关的状态,而函数成员可以定义对这些数据进行操作的方法。可以把类想象为一个蓝图,根据这个蓝图可以创建对象,这些对象在内存中是类的实例。比如说,我们可以定义一个Car类来表示汽......
  • 2023最新中级难度C++面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自面试宝典-中级难度C++面试题合集问:什么是虚函数和纯虚函数?它们有什么区别?虚函数是一种在基类中声明的函数,它可以在派生类中被覆盖以实现多态性。纯虚函数是一种特殊的虚函数,它没有定义任何具体的行为,只声明了一个接口。纯虚函数的目的是为了让......
  • 2023最新高级难度C++面试题,包含答案。刷题必备!记录一下。
    好记性不如烂笔头内容来自面试宝典-高级难度C++面试题合集问:详细解释一下C++中的虚继承(virtualinheritance)的概念及其应用场景。虚继承是一种特殊的继承方式,用于解决多重继承中可能出现的菱形继承问题。菱形继承会导致基类被复制多次,占用额外的内存,并可能导致数据混乱......
  • day13
    1.今日内容今日内容:0、有参装饰器1、迭代器2、生成器3、面向过程编程4、表达式三表达式列表生成式生成器表达式2.有参装饰器importtimecurrent_user={'username':None,#'login_time':None}#装饰器最多......
  • 《产品平台和CBB管理高级实务》公开课(深圳2024年1月12-13日)
    【课程收益】解决的关键问题:在研发体系建设、研发管理,以及产品开发过程中,研发管理人员、系统工程师、项目经理等通常会面临以下问题,希望通过本课程的学习,能够为以上人员提供具体的解决思路和应对措施。①.   为了满足不同用户的需求,长期积累下来的产品型号和物料种类繁......
  • 【K哥爬虫普法】北京某公司惨遭黑客攻击13000000余次,连夜报警……
     我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K哥特设了“K哥爬虫普法”专栏,本栏目通过对真实案例的分析,旨在提高广大爬虫工程师的法律意识,知晓如何合法合规利用爬虫技术,警钟长鸣,做一个守法、护法、有原则的技术人员。案情介绍“我啥......