`
dananhai
  • 浏览: 91546 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

C++ Boost库简介[转载]

    博客分类:
  • c++
阅读更多
       ++ Boost库简介
     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、泛型编程等等。

分享到:
评论

相关推荐

    C++ boost库,最新版本

    Boost库由Boost社区组织开发、维护。其目的是为C++程序员提供免费、同行审查的、可移植的程序库。Boost社区的发起人Dawes本人就是C++标准委员会的成员之一。大部分boost库功能的使用只需包括相应头文件即可,少数...

    C++ Boost 库中文文档

    **C++ Boost库**是C++编程语言的一个开源库集合,它为标准库提供了一系列的扩展,涵盖了诸如并发、算法、容器、智能指针、序列化、正则表达式、图形算法等多种领域。Boost库的设计目标是提升C++的效率、可移植性和可...

    c++boost库最新版本

    C++ Boost库是一个开源的C++库集合,它旨在提升C++的标准库功能,提供许多现代编程技术,如模板元编程、智能指针、多线程支持、算法库、正则表达式、数学函数以及图形界面等。Boost库最新版本为`boost_1_48_0`,这个...

    c++ boost库1.73.0 boost最新版

    Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能。Boost库使用Boost License来授权使用,根据该协议,商业的非商业的使用都是允许并鼓励的。 Boost社区建立的初衷之一就是为C++的标准化工作提供可供参考...

    c++_boost库下载学习

    #### Boost库简介 Boost是一个免费、开源且全面的C++库集合,它为C++程序员提供了丰富的模板类和函数。Boost库在C++社区中享有极高的声誉,被广泛认为是除了C++标准库之外最值得信赖的第三方库之一。Boost库的优点...

    超越c++标准库——boost程序库导论

    《超越C++标准库——Boost程序库导论》是一本深度探讨C++开发中的Boost库的专著。Boost库是C++社区公认的扩展标准库,它包含了大量的高效、高质量的可重用C++组件,旨在提升C++的灵活性、效率和可移植性。这本书面向...

    C++库 boost-1-83版本

    Boost库在C++社区中有着广泛的应用,许多 Boost 库已被采纳为C++标准库的一部分。Boost-1-83版本是Boost库的一个特定历史版本,它可能包含了那个时期Boost开发团队所实现的功能和优化。 **Boost库的主要组件** 1. ...

    C++Boost库完全开发指南_深入Cpp准标准库_带目.录zip

    C++ Boost库是一个备受推崇的开源项目,它为C++编程语言提供了丰富的工具集,旨在提升效率、增强功能并简化复杂任务。这个“C++ Boost库完全开发指南”深入介绍了如何利用Boost库来提高C++应用程序的质量和性能。...

    boost库帮助文档

    Boost库是C++编程语言中的一个开源库,它提供了大量的工具和库,旨在提升C++的效率、灵活性和可移植性。Boost库被广泛应用于各种软件项目,包括商业和学术领域,许多其组件已被采纳为C++标准库的一部分。这份"boost...

    Boost的C++库的Docker镜像.zip

    Boost的C++库的Docker镜像

    超越c++标准库 - boost程序库导论

    《超越C++标准库 - Boost程序库导论》是一本深度探讨C++编程技术的书籍,专注于Boost库的使用和理解。Boost库是C++社区广泛认可的一套开源库,它扩展了C++的标准库,提供了许多高效、高质量的工具和组件,用于解决...

    C++参考手册中文版chm以及Boost库中文版chm

    Boost库是C++社区开发的一个开源库,它提供了一系列经过精心设计和广泛测试的C++模板库,极大地扩展了C++的功能。The Boost C++ Libraries中文版.chm涵盖了以下关键模块: 1. **智能指针**:如shared_ptr、unique_...

    Boost C++扩展库

    Boost库是一个经过千锤百炼、可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。 Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。 Boost中比较有...

    C++BOOST库中文文档3

    BOOST的中文文档. 需要使用BOOST开发的朋友可以下载

    C++Boost的Regex库用法

    随着C++标准的不断进化,Boost库中的许多组件被逐渐纳入到新的C++标准中,这也从侧面反映了Boost库的重要性和影响力。因此,作为一名合格的C++程序员,学习和掌握Boost库,尤其是其中的Regex模块,是非常有价值的。

    C++使用的boost库

    Boost库是C++编程语言中的一个开源库集合,它为标准库提供了许多扩展,增加了大量高效、高质量的工具和库,极大地丰富了C++的功能。Boost库被广泛应用于各种项目,从小型应用到大型系统,都有其身影。下面将详细讨论...

    Boost程序库探秘——深度解析C++准标准库

    《Boost程序库探秘——深度解析C++准标准库》是一部深入探讨Boost库的权威著作,旨在揭示C++编程中的高级技巧和最佳实践。Boost库是C++社区中备受推崇的一套开源库,它为C++标准库提供了大量的扩展和补充,涵盖了...

    C++ Boost程序库boost_1_35_0

    C++ Boost程序库boost_1_35_0C++ Boost程序库boost_1_35_0C++ Boost程序库boost_1_35_0C++ Boost程序库boost_1_35_0C++ Boost程序库boost_1_35_0C++ Boost程序库boost_1_35_0C++ Boost程序库boost_1_35_0

Global site tag (gtag.js) - Google Analytics