++ 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、泛型编程等等。
分享到:
相关推荐
Boost库由Boost社区组织开发、维护。其目的是为C++程序员提供免费、同行审查的、可移植的程序库。Boost社区的发起人Dawes本人就是C++标准委员会的成员之一。大部分boost库功能的使用只需包括相应头文件即可,少数...
**C++ Boost库**是C++编程语言的一个开源库集合,它为标准库提供了一系列的扩展,涵盖了诸如并发、算法、容器、智能指针、序列化、正则表达式、图形算法等多种领域。Boost库的设计目标是提升C++的效率、可移植性和可...
C++ Boost库是一个开源的C++库集合,它旨在提升C++的标准库功能,提供许多现代编程技术,如模板元编程、智能指针、多线程支持、算法库、正则表达式、数学函数以及图形界面等。Boost库最新版本为`boost_1_48_0`,这个...
Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能。Boost库使用Boost License来授权使用,根据该协议,商业的非商业的使用都是允许并鼓励的。 Boost社区建立的初衷之一就是为C++的标准化工作提供可供参考...
#### Boost库简介 Boost是一个免费、开源且全面的C++库集合,它为C++程序员提供了丰富的模板类和函数。Boost库在C++社区中享有极高的声誉,被广泛认为是除了C++标准库之外最值得信赖的第三方库之一。Boost库的优点...
《超越C++标准库——Boost程序库导论》是一本深度探讨C++开发中的Boost库的专著。Boost库是C++社区公认的扩展标准库,它包含了大量的高效、高质量的可重用C++组件,旨在提升C++的灵活性、效率和可移植性。这本书面向...
Boost库在C++社区中有着广泛的应用,许多 Boost 库已被采纳为C++标准库的一部分。Boost-1-83版本是Boost库的一个特定历史版本,它可能包含了那个时期Boost开发团队所实现的功能和优化。 **Boost库的主要组件** 1. ...
C++ Boost库是一个备受推崇的开源项目,它为C++编程语言提供了丰富的工具集,旨在提升效率、增强功能并简化复杂任务。这个“C++ Boost库完全开发指南”深入介绍了如何利用Boost库来提高C++应用程序的质量和性能。...
Boost库是C++编程语言中的一个开源库,它提供了大量的工具和库,旨在提升C++的效率、灵活性和可移植性。Boost库被广泛应用于各种软件项目,包括商业和学术领域,许多其组件已被采纳为C++标准库的一部分。这份"boost...
Boost的C++库的Docker镜像
《超越C++标准库 - Boost程序库导论》是一本深度探讨C++编程技术的书籍,专注于Boost库的使用和理解。Boost库是C++社区广泛认可的一套开源库,它扩展了C++的标准库,提供了许多高效、高质量的工具和组件,用于解决...
Boost库是C++社区开发的一个开源库,它提供了一系列经过精心设计和广泛测试的C++模板库,极大地扩展了C++的功能。The Boost C++ Libraries中文版.chm涵盖了以下关键模块: 1. **智能指针**:如shared_ptr、unique_...
Boost库是一个经过千锤百炼、可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。 Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。 Boost中比较有...
BOOST的中文文档. 需要使用BOOST开发的朋友可以下载
随着C++标准的不断进化,Boost库中的许多组件被逐渐纳入到新的C++标准中,这也从侧面反映了Boost库的重要性和影响力。因此,作为一名合格的C++程序员,学习和掌握Boost库,尤其是其中的Regex模块,是非常有价值的。
Boost库是C++编程语言中的一个开源库集合,它为标准库提供了许多扩展,增加了大量高效、高质量的工具和库,极大地丰富了C++的功能。Boost库被广泛应用于各种项目,从小型应用到大型系统,都有其身影。下面将详细讨论...
《Boost程序库探秘——深度解析C++准标准库》是一部深入探讨Boost库的权威著作,旨在揭示C++编程中的高级技巧和最佳实践。Boost库是C++社区中备受推崇的一套开源库,它为C++标准库提供了大量的扩展和补充,涵盖了...
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