当前位置:首页 > C++ boost库总结
2. all(检测字符串中的所有元素是否满足给定的判断式) 3. 仿函数is_equal, is_less, is_not_greater
4. is_space, is_alnum, is_alpha, is_cntrl, is_digit(十进制数字), is_graph,
is_lower, is_print, is_punct(是否是标点符号), is_upper, is_xdigit(字符是否为十六进制数字), is_any_of(字符是否是参数字符序列中的任意数字), if_from_range(字符是否位于指定的区间[c1,c2]内)
5. trim_left、trim_right、trim
6. find_first、find_last、find_nth、find_head、find_tail
7. replace/erase_first、replace/erase_last、replace/erase_nth、
replace/erase_all、replace/erase_head、replace/erase_tail
8. find_all、split、find_iterator、split_iterator、join
1. tokenizer类似string_algo::split,为更专业的token划分工具。tokenizer库提
供预定义好的四个分词对象:
1. char_delimiter_separator:使用标点符号分词,是默认的分词函数对象。
已被声明废弃
2. char_separator:支持一个字符集合作为分隔符,默认行为与
char_delimiter_separator类似
3. escaped_list_separator:用于CSV格式的分词 4. offset_separator:使用偏移量来分词
2. xpressive,类似boost.regex的正则表达式解析器,同时还是一个类似于
boost.spirit的语法分析器,并且将这两种完全不相交的文本处理方式完美的融合在了一起
3. xpressive使用regex_token_iterator<>提供了强大的分词迭代器
第6章 正确性测试
1. 测试对于软件开发是非常重要的,程序员——尤其是C++程序员更应该认识到这一
点
2. BOOST_ASSERT宏类似于assert宏,提供运行时断言,但功能有所增强。可以
通过BOOST_DISABLE_ASSERTS来关闭。当定义
BOOST_ENABLE_ASSERT_HANDLER后,断言触发时将会调用boost::assertion_failed回调
3. BOOST_VERIFY类似BOOST_ASSERT,但断言表达式一定会被求值,Release
下仍然会失效(放弃BOOST_VERIFY)
4. BOOST_STATIC_ASSERT,编译时断言。可以出现在程序的任何位置,而不一定
只在函数域内
5. 测试用例是一个包含多个测试断言的函数,它是可以被独立执行测试的最小单元,
各个测试用例之间是无关的,发生的错误不会影响到其他测试用例
第7章 容器与数据结构
1. array是的C原生数组的STL接口包装
2. std::vector
度。std::bitset大小固定,但支持更多的位运算
3. boost.dynamic_bitset类似std::vector
位运算。dynamic_bitset还支持集合相关操作
4. 哈希容器:boost::unordered_map、boost::unordered_set、
boost::unordered_multimap、boost::unordered_multiset
5. boost::bimap,双向映射容器,提供left、right两个试图。支持的集合类型有:
set_of、multiset_of、unordered_set_of、unordered_multiset_of、list_of、vector_of、unconstrained_set_of
6. bimap的左右视图还可以通过标签访问:
bimap
7. circular_buffer
circular_buffer_space_optimized
8. tuple是固定数目非同质元素容器。tuple是std::pair的泛化,可以从函数返回任
意数量的值,也可以代替struct组合数据
9. 和std::make_pair对应,也有个make_tuple用来简化tuple的创建 10. tie()可以生成一个元素类型全是引用的tuple,相当于make_tuple(ref(a),
ref(b), ...),可以用于左值,通常用来接收返回tuple或pair函数的返回值,可以看成是对tuple的解包
11. element
给出T的元素数量
12. any能够容纳任意类型,可以用any_cast
人联想到Ogre::Any)
13. any可以持有原始指针,但这样的用法很不安全,会导致内存泄露。应该使用智能
指针包装原始指针,这样在any析构时智能指针会自动的调用delete,从而安全的释放资源
14. 如果希望一种数据结构具有tuple那样的容纳任意类型的能力,又可以在运行时动
态变化大小,那么就可以用any作为元素类型搭配容器
15. variant是对C/C++中union概念的增强和扩展。varinat是有界类型,元素类
型范围由用户指定,any是无界类型,可以容纳任意类型
16. multi_array
异常机制来处理错误,保证数组范围不越界是库用户自己的责任
17. property_tree是一个保存了多个属性值的树形数据结构,可以用类似路径的简单
方式访问任意节点的树形,而且每个节点都可以用类似STL的风格遍历子节点。property_tree特别适合于应用程序的配置数据处理,可以解析xml、ini、json和info四种格式的文本数据,使用它能减轻自己开发配置管理的工作。
第8章 算法
1. boost foreach库提供BOOST_FOREACH和BOOST_REVERSE_FOREACH
来实现对容器的正向和反向遍历
2. minmax(a, b)可在一次处理中同时获得最大最小值,执行效率上有很大提高(有
提前优化的感觉了)
3. minmax_element算法族可以得到迭代器区间内的最大最小值
第9章 数学与数字
共分享92篇相关文档