0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Boost库是什么?C++ Boost的详细资料简介

C语言专家集中营 来源:未知 作者:易水寒 2018-10-03 17:45 次阅读

boost是一个准标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化。不过对比STL,boost更加实用。STL集中在算法部分,而boost包含了不少工具类,可以完成比较具体的工作。

boost主要包含一下几个大类:字符串及文本处理、容器、迭代子(Iterator)、算法、函数对象和高阶编程、泛型编程、模板元编程、预处理元编程、并发编程、数学相关、纠错和测试、数据结构、输入/输出、跨语言支持、内存相关、语法分析、杂项。 有一些库是跨类别包含的,就是既属于这个类别又属于那个类别。

在文本处理部分,conversion/lexcial_cast类用于“用C++”的方法实现数字类型和字符串之间的转换。 主要是替代C标准库中的 atoi、 itoa之类的函数。当然其中一个最大的好处就是支持泛型了。

format库提供了对流的“printf-like”功能。printf里使用%d、%s等等的参数做替换的方法在很多情况下还是非常方便的,STL的iostream则缺乏这样的功能。format为stream增加了这个功能,并且功能比原始的printf更强。

regex,这个不多说了,正则表达式库。如果需要做字符串分析的人就会理解正则表达式有多么有用了。

spirit,这个是做LL分析的框架,可以根据EBNF规则对文件进行分析。(不要告诉我不知道什么是EBNF)。做编译器的可能会用到。一般人不太用的到。

tokenizer库。我以前经常在CSDN上看到有人问怎么把一个字符串按逗号分割成字符串数组。也许有些人很羡慕VB的split函数。现在,boost的tokenizer也有相同的功能了,如果我没记错的话,这个tokenizer还支持正则表达式,是不是很爽?

array: 提供了常量大小的数组的一个包装,喜欢用数组但是苦恼数组定位、确定数组大小等功能的人这下开心了。

dynamic_bitset,动态分配大小的bitset,我们知道STL里有个bitset,为位运算提供了不少方便。可惜它的大小需要在编译期指定。现在好了,运行期动态分配大小的bitset来了。

graph。提供了图的容器和相关算法。我还没有在程序中用到过图,需要用的人可以看看。

multi_array提供了对多维数组的封装,应该还是比较有用的。

并发编程里只有一个库,thread,提供了一个可移植的线程库,不过在Windows平台上我感觉用处不大。因为它是基于Posix线程的,在Windows里对Posix的支持不是很好。

接下来的 数学和数值 类里,包含了很多数值处理方面的类库,数学类我也不太熟,不过这里有几个类还是很有用的,比如rational分数类,random随机数类,等等。

static_assert,提供了编译器的assert功能。

test库,一个单元测试框架,非常不错。

concept_check提供了泛型编程时,对泛型量的一点检查,不是很完善,不过比没有好。

数据类型类any,一个安全的可以包含不同对象的类。把它作为容器的元素类型,那么这个容器就可以包含不同类型的元素。比用void *要安全。

compressed_pair,跟STL里的pair差不多。不过对空元素做了优化。

tuple,呵呵,也许是某些人梦寐以求的东西。可以让函数返回多个值。

跨语言支持:Python,呵呵,好东东啊,可以将C++的类和函数映射给python使用。以下为几个CSDN上的关于boost.python的中文资料:http://dev.csdn.net/article/19/19828.shtm,http://dev.csdn.net/article/19/19829.shtm,http://dev.csdn.net/article/19/19830.shtm,http://dev.csdn.net/article/19/19831.shtm

pool:内存池,呵呵,不用害怕频繁分配释放内存导致内存碎片,也不用自己辛辛苦苦自己实现了。

smart_ptr:智能指针,这下不用担心内存泄漏的问题了吧。不过,C++里的智能指针都还不是十全十美的,用的时候小心点了,不要做太技巧性的操作了。

date_time,这个是平台、类库无关的实现,如果程序需要跨平台,可以考虑用这个。

timer,提供了一个计时器,虽然不是Windows里那种基于消息的计时器,不过据说可以用来测量语句执行时间。

uitlity里提供了一个noncopyable类,可以实现“无法复制”的类。很多情况下,我们需要避免一个类被复制,比如代表文件句柄的类,文件句柄如果被两个实例共享,操作上会有很多问题,而且语义上也说不过去。一般的避免实例复制的方法是把拷贝构造和operator=私有化,现在只要继承一下这个类就可以了,清晰了很多。

value_initialized:数值初始化,可以保证声明的对象都被明确的初始化,不过这个真的实用吗?似乎写这个比直接写初始化还累。呵呵,仁者见仁了。

这里面除了regex、python和test需要编译出库才能用,其他的大部分都可以直接源代码应用,比较方便。其实这些库使用都不难。最主要的原因是有些库的使用需要有相关的背景知识,比如元编程、STL、泛型编程等等。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Boost
    +关注

    关注

    5

    文章

    370

    浏览量

    47994
  • C++
    C++
    +关注

    关注

    22

    文章

    2104

    浏览量

    73485
  • STL
    STL
    +关注

    关注

    0

    文章

    85

    浏览量

    18298

原文标题:C++ Boost库简介

文章出处:【微信号:C_Expert,微信公众号:C语言专家集中营】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是C++Boost

    C++Boost介绍C++Boost按功能分类有哪些?常用的C++Boost有哪些?
    发表于 11-04 07:34

    一文读懂boost的概念和安装方式

    一、boost简介boost是一个功能强大,构造精巧,跨平台的免费的C++开源
    的头像 发表于 09-23 09:47 7453次阅读

    信立物联网的产品详细资料简介免费下载

    本文档的主要内容详细介绍的是信立物联网的产品详细资料简介免费下载。
    发表于 09-20 08:00 6次下载
    信立物联网的产品<b class='flag-5'>详细资料简介</b>免费下载

    直流无刷电机的工作原理的详细资料简介

    本文档的主要内容详细介绍的是直流无刷电机的工作原理的详细资料简介主要内容包括了:直流无刷电机的优越性,直流无刷电机的控制结构 ,直流无刷电机的控制原理,P.I.D 控制简介,电机驱动器的保护措施
    发表于 01-02 08:00 91次下载
    直流无刷电机的工作原理的<b class='flag-5'>详细资料简介</b>

    C++程序设计教程之C++工具的详细资料说明

    本文档的详细介绍的是C++程序设计教程之C++工具的详细资料说明主要内容包括了:1. 异常处理,2. 命名空间,3. 使用早期的函数
    发表于 03-14 16:39 4次下载
    <b class='flag-5'>C++</b>程序设计教程之<b class='flag-5'>C++</b>工具的<b class='flag-5'>详细资料</b>说明

    FPGA视频教程之NIOSII开发工具的详细资料简介

    本文档的主要内容详细介绍的是FPGA视频教程之NIOSII开发工具的详细资料简介资料免费下载。
    发表于 03-21 15:43 9次下载
    FPGA视频教程之NIOSII开发工具的<b class='flag-5'>详细资料简介</b>

    PHP教程之CSS的详细资料简介

    本文档的介绍的是PHP教程之CSS的详细资料简介主要内容包括了:1.DHTML简介,2.何为CSS(层叠样式表),3.CSS的几种设置方式,4.样式规则的选择器,5.样式规则的注释与有效范围,6.用DreamWeaver产生CSS,7.样式属性详解
    发表于 04-18 17:04 6次下载
    PHP教程之CSS的<b class='flag-5'>详细资料简介</b>

    51单片机的基本数据类型详细资料简介

    本文档的主要内容详细介绍的是51单片机的基本数据类型详细资料简介
    发表于 06-17 17:44 0次下载
    51单片机的基本数据类型<b class='flag-5'>详细资料简介</b>

    计算机的二进制概念和进制运算的详细资料简介

    本文档的主要内容详细介绍的是计算机的二进制概念和进制运算的详细资料简介
    发表于 12-11 17:34 19次下载
    计算机的二进制概念和进制运算的<b class='flag-5'>详细资料简介</b>

    Qt Creator的详细资料简介

    本文档的主要内容详细介绍的是Qt Creator的详细资料简介包括了:1 Qt Creator的下载和安装2 Qt Creator环境介绍3 Qt工具简介
    发表于 12-26 16:59 33次下载
    Qt Creator的<b class='flag-5'>详细资料简介</b>

    STM32串口实验的详细资料简介

    本文档的主要内容详细介绍的是STM32串口实验的详细资料简介主要内容包括了:Systick原理和配置方法, ALIENTEK 延时函数delay讲解
    发表于 01-02 08:00 1次下载
    STM32串口实验的<b class='flag-5'>详细资料简介</b>

    STM32F103ZET6单片机的详细资料简介

    本文档的主要内容详细介绍的是STM32F103ZET6单片机的详细资料简介
    发表于 03-21 08:00 39次下载
    STM32F103ZET6单片机的<b class='flag-5'>详细资料简介</b>

    GC3210嵌入式芯片的详细资料简介

    本文档的主要内容详细介绍的是GC3210嵌入式芯片的详细资料简介资料免费下载。
    发表于 04-22 08:00 0次下载
    GC3210嵌入式芯片的<b class='flag-5'>详细资料简介</b>

    S50非接触式IC卡的详细资料简介

    本文档的主要内容详细介绍的是S50非接触式IC卡的详细资料简介
    发表于 09-09 15:33 20次下载
    S50非接触式IC卡的<b class='flag-5'>详细资料简介</b>

    Boost.asio源码剖析

    1、前言 Boost是一个可移植、提供源代码的C++,作为标准的后备,是C++标准化进程的
    的头像 发表于 11-09 14:36 1479次阅读
    <b class='flag-5'>Boost</b>.asio源码剖析