boost一些常用库(数据结构,迭代器,算法及字符串) 简单介绍_boost常用

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

Circular Buffer(Not C++11)

通用的循环缓冲实现。有空间优化版本(Lazily分配内存)。

Dynamic Bitset(C++11)

用于表示一系列的bit位。重载operator[]使之可以方便地访问其中某一bit,另外还有如&, |, <<等各种bitwise operator提供。C++11中的std::bitset和它很类似。

Intrusive(Not C++11)

Intrusive的数据结构在c中被大量使用。而相较而言,C++中,比如STL中的容器大多不是intrusive的,即其中的元素不用包含用于容器管理的数据。该库提供了基于intrusive的如list, set, splaytree, treap, rbtree, hashtable, avltree等数据结构。

MultiArray(Not C++11)

用于多维数组,即矩阵的存储和处理。比C++中类似std::array<std::array<int, n>, m>或std::vector<std::vector<>>的方式更方便高效。

Property Map(Not C++11)

最初来源于Boost Graph Library中,需要property map接口来访问图中顶点和边的相关数据。后来发展成通用库用于描述模板参数需求的工具。本质上它是基于下层数据结构(如std::map)的用于映射key object到value object的一系列concept。

Property Tree(Not C++11)

提供了树型的数据存储结构,其中的元素可以通过path来查找,有点像trie树。尤其适合configuration数据的处理。还可以方便得从XML, JSON文件中解析和生成树型结构。

Heap(Not C++11)

priority queue的实现。与STL中的std::priority_queue相比,它提供了更多功能及更多特性(如可遍历,可合并,可比较,可变,稳定等 )。

PointerContainer(Not C++11)

包含了ptr_array, ptr_vector, ptr_set, ptr_multimap等,用于将堆分配的对象指针放在容器内。用它可以免除自己定义compare函数,也可以少加reference操作,使代码更简洁。

Range(Not C++11)

提供了用两个iterator表示数据结构子部分的方法。比如表示子字符串,这样可以有效避免拷贝。同时提供了比如copy, merge, remove, rotate, reverse, replace, transform等通用算法。

算法

Geometry(Not C++11)

该库主要用于解决几何问题。算法涉及segment, multi_point, centroid, convex hull, bounding box等,提供了R-Tree等数据结构的实现。在游戏开发,图形学,机器人等众多领域都能用到。

Algorithm(Partially C++11)

提供了all_of, any_of, partition_copy,KMP,min-max等基本通用算法。其中很多已是C++11标准。

Polygon(Not C++11)

提供关于平面多边形几何数据的算法 。比如多边形集合的各种集合运算, connectivity extraction,  sweep line algorithm(for Voronoi diagrams)等算法。这些算法在GIS, CAD,VLSI等领域起到很大作用。

Sort(Not C++11)

提供了高性能排序的一种通用实现spreadsort,并对几种常见数据类型作了specialization。它是一种采用了radix和基于比较排序的混合算法,比标准库里的std::sort()在大多数情况下更高效(元素个数多或者大,本来有序,比较函数慢等情况)。

Graph(Not C++11)

实现了一些常用的图算法,比如拓扑排序,BFS, DFS, Dijkstra shortest path等等。配合Graphviz等工具还可以将数据图形化。

字符串处理

LexicalCast(Not C++11) & NumericConversion(Not C++11) & Convert (Not C++11)

boost::lexical_cast用于字符串到整数类型,或者相反方向的转换。当失败时抛boost::bad_lexical_cast异常。与同类方法相比,它比C中的strtol有更少的限制,比scanf更安全易用,比C++中的stringstream更简洁。 配合std::locale还可以根据localization进行转换。

std::numeric_cast用于数字到数字的转换,用于替换static_cast,这样如果转换失败会抛异常(比如overflow)。

Convert在LexcalCast的概念上扩展了它的功能,比如format和locale支持,更好的错误检测等。

StringAlgorithm(Not C++11)

提供了一系列字符串相关的算法 。比如case insensitive comparison,search/replace,split,trim等功能。

Spirit(Not C++11)

它可以用于写文本的parser。相比bison等专业的工具,它更轻量级。语法类似于EBNF。

RegEx(C++11)

正则表达式处理。用boost::regex可以动态生成对象进行正则表达式的解析和编译,也可以做基于正则表达式的替换和查找。

Tokenizer(Not C++11)

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值