boost学习笔记

时间类:

1. timer类可以用来计时,progress_timer继承timer,在析构的时候会自动调用elapsed()函数,显示计时时间。

2. progress_display可以显示一个cui下面的进度条,需要在终端下面显示进度的可以用这个类

3. date类内部存储了一个32位的天数,因此可以作为基本类型用,对应的时长类为date_duration,对应的区间类为date_period。 day_clock::local_day()返回今天

4. day_iterator, year_iterator提供天,年的迭代。boost::gregorian::gregorian_calender::is_leap_year()可以判断年份是否是闰年

5. 时间点类:ptime使用64位(微秒)或者96位(纳秒) 时间时长类:time_duration。一般支持到微秒,可以通过宏BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG调整,支持到纳秒 时间区间:time_period time迭代器:time_iterator提供对时间的迭代。利用ptime可以实现高精度计时器


内存:

1. 智能指针要求所指的类型的析构函数不能抛出异常

2. scoped_ptr拷贝构造函数和赋值操作符被申明为私有,禁止对这种指针进行复制,适用的场景为只在一定生命周期的范围内使用,不能转移对象所有权。不能做容器元素。scoped_array用来代理数组指针,只提供数组访问方式。

3. shared_ptr计数方式的智能指针,支持拷贝和复制,可以在容器内使用,线程安全。make_shared<T>工厂函数,可以消除显示的new调用。shared_ptr构造函数,还可以指明一个

函数指针,这样在对象删除的时候调用的不是delete,而是被指明的函数。这个被称为shared_ptr删除器。shared_array用来保存数组指针

4. weak_ptr是配合shared_ptr的一个智能指针,没有重载operator*和->。最大的作用是观测shared_ptr的使用情况,也可以通过函数lock得到一个shared_ptr指针,使用资源。当资源的引用为0时,lock返回null。可以帮助解决循环引用的情况。

5. pool, object_pool, singleton_pool和pool_alloc四种形式的内存池,其中object_pool提供对类对象的管理



实用工具:

1. noncopyable帮助实现一个禁止复制的类, 需要继承,其实我更喜欢直接自己将拷贝构造函数和赋值函数设成private

2. singleton单件类


现在做的项目正好在用boost库,书暂时不看了,这段是实际项目中用到的

  • boost_auto 语意是可以根据返回值设定变量类型,在容器的begin, end, find操作时用的比较多,其实是很偷懒的写法(但是程序员不是都喜欢偷懒的么)ex:BOOST_FOREACH(iter, vector.begin())
  • boost_bind boost_function
    语意类似stl的bind1st, bind2nd,但是比这个好用多了,boost_bind会返回一个boost_function。 通过这2个函数可以很方便地实现各种函数绑定
  • boost::factory boost::value_factory 这2个类是用来将类的构造函数封装为一个函数对象,factory使用new,value_factory使用直接创建方式,这2个类联合boost::function可以实现工厂模式,具体可以看这个blog http://blog.csdn.net/mpforwd/article/details/5791699
   接下来是boost的预编译宏系列,可以用来产生重复代码,这些宏很强大

  • boost_pp_cat
  • boost_pp_seq_for_each
  • boost_pp_tuple_elem
  • boost_pp_seq_for_each_i
  • boost_pp_seq_size
  • boost_pp_if
  • boost_pp_seq_tail
  • boost_pp_seq_head
  • boost_pp_repeat
  • boost_pp_enum_binary_params
  • boost_pp_enum_params
  • boost_scope_exit 当生命周期结束时,做特定操作,还有专门的一个名词asii
  • boost::property_tree::ptree 用来存储xml内容到ptree
  • boost::filesystem 文件系统的相关操作
  • boost::interprocess::file_lock
  • boost_foreach 简化对容器的遍历,但是对于map这种类型,不是很好用,需要特别处理
  • boost::program_options 程序运行参数处理宏,很强大
  • boost::asio 网络库


你可能感兴趣的:(boost学习笔记)