Boost库的学习(一)

it2022-05-07  2

时间和日期的处理一直是很麻烦的问题,在boost库中有专门的对象来解决该问题timer,progress_timer,progress_display,date;

下面分别说明:timer简单的计时器类,可做秒表-----

       progress_timer这个是进度计时器,只需要构造在生命周期结束时自动结束计时并printout;

       progress_display是个图形的进度计时器,但需要注意不能混合用于有shell输出的类或者函数,他会导致图形混乱;

       date     以上都是时间,这个是日期处理的。

内存管理,智能指针

在c++标准库中有个auto_ptr的智能指针,但是他在赋值时产生所有权转移因此不能用于容器,和他类似的是boost::scoped_ptr,但后者是不能发生拷贝构造和赋值;

boost::scoped_array该类为指向数组的智能指针,和scoped_ptr类似区别是使用new[]构造,delete[]释放管理动态数组。该类应该避免使用。

重点:boost::shared_ptr智能指针类能用于标准的容器中,同时仅仅只支持“<”操作符,其他操作符部支持。boost::make_shared工厂函数用于生产多个new shared_ptr操作

typedef vector<shared_ptr<int> > vs; vs v(10); int i = 0; for(vs::iterator pos = v.begin(); pos != v.end(); ++pos) { (*pos) = make_shared<int> (++i); cout << *(*pos) << ","; } cout << endl; shared_ptr<int> p = v[9]; *p = 100; cout << *v[9] << endl;

 桥接模式,工厂模式; 定制删除器shared_ptr<FILE> fp(fopen("xx.txt","r"), fclose);在释放时不是采用delete去释放资源而是调用定制的函数,此处为fclose();

Boost::shared_array 类似如shared_ptr和scoped_array的结合体,有他们的优点同时有他们的缺点 下标操作不会检查安全性导致未知结果。

Boost::weak_ptr类是协同shared_ptr一起工作的,作为一个良好的观察员他不共享指针,不操作资源。(只做一个安静的“美男子”),可用lock()成员函数来获取一个shared_ptr指针

转载于:https://www.cnblogs.com/Fr2eW0lf/p/4812770.html

相关资源:Boost 库学习指南和说明文档

最新回复(0)