[转载]boost库的简单介绍

mac / linux 下安装和使用多个版本boost     工作需要,既需要编译bitshares源码又需要编译eos的源码,而两个项目分别要求boost版本为1.57-1.65和1.67+,所以存在boost安装一个版本不能满足两个项目的情况,于是就需要安装两个版本。     我这里考虑bitshares源码采用1.60,eos版本采用1.67,步骤如下: 一、先去下载 tar.gz文件 https://www.boost.org/use... 阅读详情
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.shtmhttp://dev.csdn.net/article/19/19829.shtmhttp://dev.csdn.net/article/19/19830.shtmhttp://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是一个用于C++编程语言的开源,其中包含了许多常用的数据结构和算法 其中boost::edge_connectivity是一个非常有用的算法,它可以计算图形中所有点对之间的最大边连通度。最后,我们使用edge_connectivity函数计算所有节点对之间的最大边连通度,并将结果打印到屏幕上。综上所述,boost::edge_connectivity是一个非常有用的函数,可用于计算图形中所有点对之间的最大边连通度。在本文的示例中,我们将使用boost::edge_connectivity函数来计算一个简单的无向图中所有点对之间的最大边连通度。 阅读详情

相关推荐

【C++】开源:Boost常用组件配置使用

boost常用组件使用

DevFrank的博客 4459

[C/C++] -- Boost、Muduo编译安装使用

Muduo 是一个基于 C++11 的高性能网络,其核心是事件驱动、非阻塞 I/O、线程池等技术,以实现高并发、高性能的网络通信。

Afison的博客 2430

C++ Boost安装

一、Boost介绍 C++ Boost是一个开源的、可移植的C++,被称为C++的“准”标准库。可以理解Boost是STL的发展和补充,其设计理念STL相近,但比STL的内容更加全面也更加实用。 Boost中主要包含了以下的一些大类:字符串、文本处理,容器,迭代器,算法,多线程编程,网络编程,IO,内存相关等等。 二、Boost的安装 要使用Boost,需要在代码中将Boost引入...

希望我的博客,能帮上你解决学习中工作中所遇到的问题 8407

C++:Boost

Boost是一个功能强大,构造精良,跨越平台,代码开源,完全免费的C++程序。共包含160余个/组件,涵盖字符串文本处理、容器、迭代器、算法、图像处理、模板元编程、并发编程等多个领域。由c++标准委员会成员发起倡议并建立boost社区,C++11标准库中三分之二来自boost,并且将来还会有更多的进入c++标准库,因此boost是一个c++ "准"标准库。支持现有的所有操作系统。Boost的大多数组件不需要编译链接,源码里直接包含头文件。(注意:包含头文件的时候需要有boost目录,即。

lingshengxiyou的博客 9561

C++_开发_Boost开源_介绍_使用

C++_开发_Boost开源_介绍_使用

qq_44681788的博客 8604

Linux下使用CMake进行编译的时候寻找Boost

Linux下使用CMake进行编译的时候寻找Boost find_package 通过调用find_package可以找到头文件和所需要的文件或者是一个CMake打包配置文件, find_package(Boost [version] [EXACT] # 可选项,最小版本或者确切所需版本 [REQUIRED] # 可选项,如果找不到所需,报错 [COMPONENTS <libs>...] # 所需的名称,比如说. "date_t.

hyl999的专栏 4384

转载】手撕BoostBoost公式推导及实验验证

文章详细描述了BOOST变换器的拓扑结构和工作原理,以及一些关键的电压电流波形和计算过程,写得非常好,特此转载,版权归原作者。

不定期发布一些CPU、DDR、NAND、PCIE等相关知识的学习和感悟。 1万+

boost生成文件命名和编译(转载)

boost生成文件命名和编译 (原址:http://www.cppblog.com/Robertxiao/archive/2013/01/06/197022.html) 生成文件命名规则:boost中有许多,有的需要编译、而有的不需要编译,只需包含头文件就可以使用。编译生成的文件名字普遍较长,同一个根据编译链接选项不同,又可以生成多个不同名字的文件。生成的文件名字是很长,可是这样带的信息才多,也就容易识别出用途。其实生成文件的名字遵循一定的规则,有着固定的格式。识别这种格式,能帮助我们更高效地

dragoo1的专栏 1000

安装和使用多个版本boost

https://blog.csdn.net/beijihukk/article/details/86188739 工作需要,既需要编译bitshares源码又需要编译eos的源码,而两个项目分别要求boost版本为1.57-1.65和1.67+,所以存在boost安装一个版本不能满足两个项目的情况,于是就需要安装两个版本。 我这里考虑bitshares源码采用1.60,eos版本采用1.67,...

newbeixue的博客 4101

转载boost中filesystem中path的使用

转载boost中filesystem中path的使用: boost中的filesystem中有关路径的操作十分的方便特别是path重载的/,看起来就像对普通路径的书写一样,你再也不用担心为组合路径时少写‘/’而导致找不到文件或者程序直接崩溃烦恼啦,因为当你缺少时path会自动的给你添加上啦。而在C++14以上的版本这块正式成了C++的标准啦。废话不说啦,直接上代码,下面只演示了一些常用的,更多方法可以直接go到源码中去看看。 #include <iostream> #include &lt

weitaming1的博客 1790

ubuntu下安装boost简单方法

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://artmath.blogbus.com/logs/76597620.html 1.下载boost的压缩包,地址:http://www.boost.org/users/download/version_1_44_0 目前的版本是1.44.0 2.解压到/usr/local:gz后缀的解压:sudo ta

1002

boost

转载:https://blog.csdn.net/weixin_38102771/article/details/88779592 1.什么是boost boost是一个优秀的。可移植,开源的C++,它是由C++标准委员会工作自成员发起,它是对STL的延续和扩充,设计理念和STL比较接近,都是利用泛型让复用达到最大化,其中有些内容经常成为下一代C++标准库内容,在C++社区影响很大,是不折不扣的“准”标准库。 相比STL,boost更加实用。STL集中在算法部分,而boost包含了不少

无敌秋 1229

boost在codeblocks中的配置(转载

Boost环境的配置使用   开发环境:CodeBlocks  boost1.46 注:由于时间过长,不知道原作者是谁,在这里说声抱歉,请恕没有写上原作者大名,同时也对极少部分内容做了更改。  编译boost可参见boost编译 1、(如果已经编译过了boost这步可以跳过)根据文档中的bjam.exe编译Boost1.46,将bjam.exe放入解压好的文件中,执行如下语句

zhuyucheng123的专栏 4720

linux下boost的安装

boost‘准标准库’安装过程。 系统是ubuntu虚拟机,安装的是boost_1_60_0。 (1)首先去下载最新的boost代码包,网址www.boost.org。 (2)进入到自己的目录,解压: bzip2 -d boost_1_60_0.tar.bz2tar xvf boost_1_60_0.tar (3)之后进入boost目录cd boost_1_60_0/./boo...

djm82755的博客 332

boost.asio学习笔记一、linux下boost的安装

学习开源第一步就是编译安装好,然后运行成功一个demo,然后才能进行之后的工作。 下面就来讲讲boost在linux下的安装。 [mjf@localhost ~]$ tar -zxvf boost_1_55_0.tar.gz [mjf@localhost boost_1_55_0]$ ./bootstrap.sh --prefix=/home/mjf/lib [mjf@loc

【码农在新加坡】的专栏 1万+

linux 升级boost版本,[转载学习]Linux下boost的安装 | 勤奋的小青蛙

转载地址:http://blog.csdn.net/majianfei1023/article/details/46761029学习开源第一步就是编译安装好,然后运行成功一个demo,然后才能进行之后的工作。下面就来讲讲boost在linux下的安装。[mjf@localhost ~]$ tar -zxvf boost_1_55_0.tar.gz[mjf@localhost boost_1_...

weixin_39623411的博客 145

boost编译

转载 https://www.cnblogs.com/zhcncn/p/3950477.html 需要注意,boost默认是自动连接,所以会报缺少一些你没使用的,如下图 所以再.pro文件中添加如下宏即可 DEFINES += BOOST_ALL_NO_LIB DEFINES += BOOST_ALL_DYN_LINK ...

Sparrow_du的博客 384

BOOST 学习参考完全开发指南(更新完毕)

本文由 \color{blue}{\bf本文由} @DavidHan\color{red}{\it @David Han}出品,转载请注明出处\color{blue}{ \bf出品 ,转载请注明出处}     文章链接:\color{green}{\bf文章链接:}http://blog.csdn.net/david_han008/article/details/72811897安装和配置

DavidHan008 8006
上一篇: [转载]Boost源码剖析之:型别分类器——type_traits
下一篇: 恭祝各位同仁和自己鸡年快乐!
snaill
博客等级 码龄27年 599粉丝 159原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值