云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > C++ boost库总结

C++ boost库总结

  • 62 次阅读
  • 3 次下载
  • 2025/5/5 0:20:12

3. typeof库使用宏模拟了C++0X中的typedef和auto关键字,可以减轻书写繁琐

的变量类型声明工作,简化代码。对于用户自定义类型需要手工用宏注册。(语法并没那么好看,不准备使用)

4. optional使用“容器”语义,包装了“可能产生无效值”的对象,实现了“未初始

化”的概念(Nullable

5. optional make_optional(bool condition, T const& v)用来简单构建

optional对象,但不能处理optional的情况。(此乃鸡肋)

6. optional str(in_place(\就地创建\,而不需拷贝临时对象,避免

大对象的拷贝开销

7. 用于初始化的assign库(仅限于STL标准容器,通过重载“+=”和“,”运算符实现):

#include using namespace boost;

vector v; v += 1,2,3,4,5,6*6; set s; s += \

map m; m += make_pair(1, \

8. assign还支持insert()、push_front()、push_back()(通过重载“()”实现):

vector v; push_back(v)(1)(2)(3)(4)(5); list l; push_front(l)(\set s; insert(s)(3.14)(0.618)(1.732); map m; insert(m)(1, \

9. assign也可以将“()”和“,”混用:

vector v;

push_back(v), 1, 2, 3, 4, 5;

push_back(v)(6), 7, 64 / 8, (9), 10; deque d;

push_front(d)() = \

10. assign list_of()函数:

vector v = list_of(1)(2)(3);

deque d = (list_of(\set s = (list_of(10), 20, 30, 40);

map m = list_of(make_pair(1, \如果需要将括号与逗号混合使用,则要求最外侧加一个括号,否则编译器无法推导

11. assign map_list_of/pair_list_of函数:

map m1 = map_list_of(1, 2)(3, 4)(5, 6) map m2 = map_list_of(1, \

12. assign tuple_list_of用户初始化元素类型为tuple的容器

13. assign repeat()可以重复生成值,repeat_fun()可以重复无参函数或仿函数,

range()则可以从序列中取出部分或全部:

vector v = list_of(1).repeat(3, 2)(3)(4)(5); // v = 1,2,2,2,3,4,5 multiset ms; insert(ms).repeat_fun(5, &ran).repeat(2, 1), 10; // ms = x,x,x,x,x,1,1,10

deque d; push_front(d).range(v.begin(), v.begin() + 5); // d=3,2,2,2,1

14. assign支持8个STL标准容器(vector、string、deque、list、set、multiset、

map、multimap),对容器适配器(stack、queue、priority_queue)则需要通过to_adapter():

stack stk = (list_of(1), 2, 3).to_adapter();

queue q = (list_of(\priority_queue pq = (list_of(1.414), 1.732).to_adapter();

15. assign也支持部分不在STL中的非标准容器slist、hash_map、hash_set,因为

其符合标准容器定义,同时也支持大部分boost容器:array、circular_buffer、unordered等

16. assign list_of()嵌套:

vector> v = list_of(list_of(1)(2)) list_of(list_of(3)(4)); v += list_of(5)(6), list_of(7)(8);

17. assign ref_list_of()、cref_list_of()、ptr_push_back()、ptr_list_of()还支持以引

用或指针来构造初始化: int a = 1, b = 2, c = 3;

vector v = ref_list_of<3>(a)(b)(c);

18. boost::swap是对std::swap的增强,并且扩充了对数组的支持:

int a1[10]; std::fill_n(a1, 10, 5); int a2[10]; std::file_n(a2, 10, 20); boost::swap(a1, a2);

19. 单件boost::details::pool::singleton_default在main之前进行构造,支持继

承或非继承形式(最恨main之前的事情了)

20. 单件boost::serialization::singleton在main之前进行构造,支持继承或非继

承形式。继承方式更彻底一些,非继承方式不影响原有代码

21. boost::tribool三态bool,indeterminate(tribool)可判断一个三态bool是否处

于不确定状态

22. 选择optional还是tribool:如果返回值可能是无效的,那么就是

optional,如果返回值总是确定的,但可能无法确定其意义,那么就用tribool(最多自己随手定义个enum状态,为了这点需求需要记住这一堆名称和细节!)

23. using namespace std::rel_ops; 则一旦为类定义了operator==和<,则自动具

有!=、>、<=和>=的功能。boost operators库提供了对该功能的增强,使用时只需继承自这些类并提供指定的operator重载即可获得附送的重载:

1. equality_comparable:要求提供==,可自动实现!=,相等语义 2. less_than_comparable:要求提供<,可自动实现>、<=、>= 3. addable:要求提供+=,可自动实现+ 4. subtractable:要求提供-=,可自动实现-

5. incrementable:要求提供前置++,可自动实现后置++ 6. decrementable:要求提供前置--,可自动实现后置-- 7. equivalent:要求提供<,可自动实现==,等价语义 8. totally_ordered:全序概念,组合了equality_comparable和

less_than_comparable

9. additive:可加减概念,组合了addable和subtractable 10. multiplicative:可乘除概念,组合了multipliable和diviable 11. arithmetic:算术运算概念,组合了additive和multiplicative 12. unit_stoppable:可步进概念,组合了incrementable和decrementable 13. public dereferenceable:解引用操作符,要求提供

operator*,可自动实现operator->。P为operator->返回类型,一般为T*

搜索更多关于: C++ boost库总结 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

3. typeof库使用宏模拟了C++0X中的typedef和auto关键字,可以减轻书写繁琐的变量类型声明工作,简化代码。对于用户自定义类型需要手工用宏注册。(语法并没那么好看,不准备使用) 4. optional使用“容器”语义,包装了“可能产生无效值”的对象,实现了“未初始化”的概念(Nullable) 5. optional make_optional(bool condition, T const& v)用来简单构建optional对象,但不能处理optional的情况。(此乃鸡肋) 6. optional str(in_place(\就地创建\,而不需拷贝临时对象,避免大对象的拷贝开销 7. 用于初始化的assign库

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com