Boost
灬Sunnnnn
不积跬步,无以至千里.不积小流,无以成江海
展开
-
Boost库基础-字符串与文本处理(xpressive)
xpressivexpressive提供给了对正则表达式的全面支持,它提供了动态和静态两种使用方式。静态方式类似于spirit,使用操作符重载生成编译期的表达式对象,可以在编译期构建正则表达式甚至自定义语法;动态方式类似boost.regex,以字符串作为一个表达式对象,在运行时进行语法检查和处理;这里我们主要讲解动态用法,为了使用动态用法,需要包含头文件:#incl...原创 2020-03-28 16:00:38 · 561 阅读 · 0 评论 -
Boost库基础-字符串与文本处理(tokenizer)
tokenizertokenizer库是一个专门用于分词的字符串处理库,它与string_algo库的分割算法很类似,但有更多的变化,需要包含以下头文件。#include <boost/tokenizer.hpp>using namespace boost;类tokenizer是tokenizer库的核心,类摘要如下:tokenizer接受三个模板类型参数:...原创 2020-03-28 14:37:09 · 820 阅读 · 0 评论 -
Boost库基础-字符串与文本处理(string_algo)
string_algostring_algo被设计用于处理字符串,然而处理对象并不一定是string或basic_string<T>,可以是任何符合boost.range要求的容器。容器内的元素也不一定是char或wchar_t,任何可拷贝和赋值的类型均可,但如果类型的拷贝赋值代价很高,那么string_algo的性能会下降。string_algo库位于名字空间boost:...原创 2020-03-26 22:05:51 · 930 阅读 · 0 评论 -
Boost库基础-字符串与文本处理(string_ref)
string_refboost.string_ref是一种轻量级的字符串,它只持有字符串的引用,没有内存拷贝成本,所以运行效率很高。string_ref库定义了basic_string_ref,接口与std::string很相似,以下为类摘要:它不拷贝字符串,所以就不分配内存,只用两个成员变量ptr_和len_标记字符串都起始位置和长度,这样就实现了字符串的表示。 basic...原创 2020-03-26 19:59:42 · 655 阅读 · 0 评论 -
Boost库基础-字符串与文本处理(format)
format#include <boost/format.hpp>using namespace boost;用法:#include <boost/format.hpp>using namespace boost;int main(){ cout<< format("%s:%d+%d=%d\n") %"sum" % 1 %...原创 2020-03-26 19:56:17 · 357 阅读 · 0 评论 -
Boost库基础-字符串与文本处理(lexical_cast)
字符串我们这里注意讲解Boost中六个字符串与文本处理领域的组件。lexical_cast和format:用于字符串的表示,类似C标准库函数功能,可以将数值转化为字符串,对输出做精确的格式化。 string_ref:提供一个“只读视图”,避免字符串的拷贝代价。 string_algo:提供了大量常用的字符串处理函数。 tokenizer:这是一个分词器。 xpressive:一...原创 2020-03-26 19:53:34 · 630 阅读 · 0 评论 -
Boost库基础-pool库
pool库内存池预先分配了一块大的内存空间,然后就可以在其中使用某种算法实现高效快速的自定制内存分配。boost.pool库基于简单分隔存储思想实现了一个快速、紧凑的内存池库,不仅能够管理大量的对象,还可以被使用做STL的内存分配器。某种程度上讲,它近似于一个小型的垃圾回收机制,在需要大量地分配/释放小对象时很有效率,而且完全不需要考虑delete。pool库包含4个组成部分:...原创 2020-03-24 20:39:21 · 535 阅读 · 0 评论 -
Boost库基础-智能指针(intrusive_ptr)
intrusive_ptrintrusive_ptr是一种引用计数型智能指针,与之前介绍的scoped_ptr、shared_ptr不同,需要额外增加一些的代码才能使用。如果现存代码已经有了引用计数机制管理的对象,那么intrusive_ptr是一个非常好的选择,可以包装已有对象从而得到与shared_ptr类似的智能指针。因为他是引用计数类型指针,所以接口与shared_pt...原创 2020-03-23 22:23:08 · 1577 阅读 · 0 评论 -
Boost库基础-智能指针(weak_ptr)
weak_ptrweak_ptr是为了配合shared_ptr而引入的一种智能指针,它更像是shared_ptr的一个助手而不是智能指针,它不具有普通指针的行为,没有重载operator* 和->。用法:#include <iostream>#include <string>#include <vector>#include...原创 2020-03-23 21:50:31 · 311 阅读 · 0 评论 -
Boost库基础-智能指针(shared_ptr)
shared_ptrshared_ptr与scoped_ptr同样是用于管理new动态分配对象的智能指针,它们都重载了 *和->操作符,提供显示bool类型转换以判断指针的有效性,get()可以得到原始指针,并且没有提供指针算术操作,也不能管理new[ ] 产生的动态数组指针。例:shared_ptr<int> spi(new int);//解引用*spi...原创 2020-03-23 21:10:29 · 1879 阅读 · 0 评论 -
Boost库基础-智能指针(scoped_ptr)
smart_ptr库boost.smart_ptr库提供了六种智能指针,包括scope_ptr、scoped_array、shared_ptr、shared_array、weak_ptr和intrusive_ptr。它们是轻量级的对象,速度和原始指针相差无几,都是异常安全的。需要包含头文件#include<boost/smart_ptr.hpp>using name...原创 2020-03-22 17:47:46 · 313 阅读 · 0 评论 -
Boost库基础-时间
posix_time类date_time库在格里高利历的基础上提供微秒级别的时间系统,但如果需要,它最高可以达到纳秒级别的精确度。用它需要包含以下头文件#include <boost/date_time/posix_time/posix_time.hpp>using namespace boost::posix_time;1.时间长度与日期长度date_du...原创 2020-03-22 14:45:51 · 1399 阅读 · 0 评论 -
Boost库基础-日期
1.date_time它是一个非常全面且灵活的日期时间库,基于我们日常使用的公历,可以提供时间相关的各种所需功能,如精确定义的时间点、时间段和时间长度、加减若干天/月/年、日期迭代器等等,date_time库还支持无限时间和无效时间这种实际生活中有用的概念,而且还可以与C的传统时间结构tm相互转换,提供向下支持。date_time库需要编译才能使用,编译方法。date_time库...原创 2020-03-19 22:51:17 · 320 阅读 · 0 评论 -
Boost库基础-计时器timer库
1.timer库timer是一个很小的库,提供简易的度量时间和进度显示功能,可以用于性能测试等需要计时的任务。timer库包含三个小组件,分别是:计时器timer、progress_timer和进度指示器progress_display。①timer类可以用于测试时间的流逝,是一个小型的计时器,提供毫秒级别的计时精度和操作函数。用法:#include <iostre...原创 2020-03-19 21:02:10 · 337 阅读 · 0 评论