Boost C++ 库 | 是什么?

环境搭建
Qt | ubuntu20.04+boost_1_86_0搭建和编译(使用Qt6.5.3中运行测试程序)

C++ 与 Boost

Boost C++ 库 是一组基于C++标准的现代库。其源码按 Boost Software License 来发布,允许任何人自由地使用、修改和分发。这些库是平台独立的,且支持大多数知名和不那么知名的编译器。

要增强C++项目的生产力,除了C++标准以外,Boost C++ 库是一个不错的选择。由于当前版本的C++标准在2003年修订之后,C++又有了新的发展,所以 Boost C++ 库提供了许多新的特性。由于有了 Boost C++ 库,我们无需等待下一个版本的C++标准,就可以立即享用C++演化中取得的最新进展。

Boost C++ 库具有良好的声誉,这基于它们的使用已被证实是非常有价值的。在面试中询问关于 Boost C++ 库的知识是不常见的,因为知道这些库的开发人员通常也清楚C++的最新创新,并且能够编写和理解现代的C++代码。

安装

Boost C++ 库均带有源代码。其中大多数库只包含头文件,可以直接使用,但也有一些库需要编译。为了尽可能容易安装,可以使用 Boost Jam 进行自动安装。无需逐个库进行检查和编译,Boost Jam 自动安装整个库集。它支持许多操作系统和编译器,并且知道如何基于适当的配置文件来编译单个库。

为了在 Boost Jam 的帮助下自动安装,要使用一个名为 bjam 的应用程序,它也带有源代码。对于某些操作系统,包括 Windows 和 Linux,也有预编译好的 bjam 二进制文件。

为了编译 bjam 本身,要执行一个名为 build 的简单脚本,它也为不同的操作系统提供了源代码。对于 Windows,它是批处理文件 build.bat。对于 Linux,文件名为 build.sh

如果执行 build 时不带任何命令行选项,则该脚本尝试找到一个合适的编译器来生成 bjam。通过使用命令行开关,称为 toolset,可以选择特定的编译器。对于 Windows,build 支持 toolsets vc7vc8 和 vc9,可以选择不同版本的 Microsoft C++ 编译器。要从 Visual Studio 2008 的C++编译器编译 bjam,需要指定命令 build vc9。对于 Linux,支持 toolsets gcc 和 intel-linux,分别选定 GCC 和 Intel 的C++编译器。

Boost C++ 库的 1.42.0 版本

Boost C++ 库C++ 标准简要说明
Boost.AnyBoost.Any 提供了一个名为 boost::any 的数据类型,可以存放任意的类型。例如,一个类型为 boost::any 的变量可以先存放一个 int 类型的值,然后替换为一个 std::string 类型的字符串。
Boost.ArrayTR1Boost.Array 可以把 C++ 数组视同 C++ 标准的容器。
Boost.AsioTR2Boost.Asio 可用于开发异步处理数据的应用,如网络应用。
Boost.BimapBoost.Bimap 提供了一个名为 boost::bimap 的类,它类似于 std::map. 主要的差别在于 boost::bimap 可以同时从键和值进行搜索。
Boost.BindTR1Boost.Bind 是一种适配器,可以将函数作为模板参数,即使该函数的签名与模板参数不兼容。
Boost.ConversionBoost.Conversion 提供了三个转型操作符,分别执行向下转型、交叉转型,以及不同数字类型间的值转换。
Boost.DateTimeBoost.DateTime 可用于以灵活的格式处理、读入和写出日期及时间值。
Boost.ExceptionBoost.Exception 可以在抛出的异常中加入额外的数据,以便在 catch 处理中提供更多的信息。这有助于更容易地调试,以及对异常情况更好地作出反应。
Boost.FilesystemTR2Boost.Filesystem 提供了一个类来处理路径信息,还包含了几个访问文件和目录的函数。
Boost.FormatBoost.Format 以一个类型安全且可扩展的 boost::format 类替代了 std::printf() 函数。
Boost.FunctionTR1Boost.Function 简化了函数指针的定义。
Boost.InterprocessBoost.Interprocess 允许多个应用通过共享内存以快速、高效的方式进行通信。
Boost.LambdaBoost.Lambda 可以定义匿名的函数。代码被内联地声明和执行,避免了单独的函数调用。
Boost.MultiindexBoost.Multiindex 定义了一些新的容器,它们可以同时支持多个接口,如 std::vector 和 std::map 的接口。
Boost.NumericConversionBoost.NumericConversion 提供了一个转型操作符,可以安全地在不同的数字类型间进行值转换,不会生成上溢出或下溢出的条件。
Boost.PointerContainerBoost.PointerContainer 提供了专门为动态分配对象进行优化的容器。
Boost.RefTR1Boost.Ref 的适配器可以将不可复制对象的引用传给需要复制的函数。
Boost.RegexTR1Boost.Regex 提供了通过正则表达式进行文本搜索的函数。
Boost.Serialization通过 Boost.Serialization,对象可以被序列化,如保存在文件中,并在以后重新导入。
Boost.SignalsBoost.Signal 是一个事件处理的框架,基于所谓的 signal/slot 概念。函数与信号相关联并在信号被触发时自动被调用。
Boost.SmartPoinersTR1Boost.SmartPoiners 提供了多个智能指针,简化了动态分配对象的管理。
Boost.SpiritBoost.Spirit 可以用类似于 EBNF (扩展巴科斯范式)的语法生成词法分析器。
Boost.StringAlgorithmsBoost.StringAlgorithms 提供了多个独立的函数,以方便处理字符串。
Boost.SystemTR2Boost.System 提供了一个处理系统相关或应用相关错误代码的框架。
Boost.ThreadC++0xBoost.Thread 可用于开发多线程应用。
Boost.TokenizerBoost.Tokenizer 可以对一个字符串的各个组件进行迭代。
Boost.TupleTR1Boost.Tuple 提供了泛化版的 std::pair,可以将任意数量的数据组在一起。
Boost.UnorderedTR1Boost.Unordered 扩展了 C++ 标准的容器,增加了boost::unordered_set 和 boost::unordered_map.
Boost.VariantBoost.Variant 可以定义多个数据类型,类似于 union, 将多个数据类型组在一起。Boost.Variant 比 union 优胜的地方在于它可以使用类。

故我在

点击下方卡片 关注我

↓↓↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Qt历险记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值