Boost程序库完全开发指南——阅读笔记

1.2.1 boost安装
推荐一键式安装
下载: 官网下载地址
(1)安装boost:解压后在Boost根目录下,执行./bootstrap.sh完毕后执行./b2 install,可以查看“/usr/local/include"以及”/usr/local/lib中是否有相应的头文件和库文件,来验证是否安装成功
(2)安装b2:解压后在Boost根目录下,执行cd tools/build/,执行./bootstrap.sh完毕后,执行./b2 install,b2会被默认安装到"/usr/local/bin目录下
(3)常用的b2命令
常用命令

  1. 第二章主要讲的是timer库,个人认为不是很好用

  2. 内存管理
    3.2 scoped_ptr:跟unique_ptr类似,但是其对于所有权更加严格,且智能在本作用域里使用,不能被转让。
    scoped_ptr类摘要
    scoped_ptrstd::stringsp(new string(“test”));// 构造一个scoped_ptr对象
    assert(sp);//使用显式bool转型
    assert(ap!=nullptr);//空指针比较操作
    std::cout<<sp<<std::endl; //operatyor取字符串的内容
    std::cout<size()<std::endl;//operatyor-取字符串的长度
    3.3 shared_ptr
    (1)类摘要
    shared_ptr类摘要
    (2)构造函数
    shared_ptr():
    shared_ptr(Yp);
    shared_ptr(shared_ptr const&r);
    shared_ptr(Y
    p,D d);
    (3)shared_ptr提供了一个工厂函数make_shared()消除显示的new调用
    工厂函数
    auto sp = make_sharedstd::string(“make_shared”);//创建string的共享指针
    auto spv = make_shared<vector>(10,2);//创建vector的共享指针
    assert(spv->size()==10);
    typedef vector<shared_ptr>vs;// 一个持有shared_ptr的标准容器类型
    vs v(10);//声明一个拥有10个元素的容器,元素被初始化为空指针
    (4)应用于桥接模式和工厂模式
    应用于桥接模式
    工厂模式:

#pragma once
#include <iostream>
#include <boost/smart_ptr.hpp>
// 定义抽象工厂类
class Abstract {
public:
    virtual void f() = 0;
    virtual void g() = 0;
protected:
    virtual ~Abstract() = default;
};

class Impl :public Abstract
{
public:
    Impl() = default;
    virtual ~Impl() = default;
public:
    virtual void f() {
        std::cout << "class impl f" << std::endl;
    }
    virtual void g() {
        std::cout << "class impl g" << std::endl;
    }

};

boost::shared_ptr<Abstract>create() {
    return boost::make_shared<Impl>();
}

int main()
{
    auto p = create();
    p->f();
    p->g();
    return 0;
}

(5)定制删除器
shared_ptr(Yp, D d);//第一个参数是被管理的指针,第二个则是告诉shared_ptr在析构时不要使用delete来操作指针p,而是用d来操作,即把delete p换成d§。
定制删除器示例
(6)指针转型函数
static_pointer_cast()
const_pointer_cast()
dynamic_pointer_cast()
(7)别名构造函数:
template
shared_ptr(shared_ptrconst&r,element_type
p);
举例:

auto p1 = make_shared<std::pair<int,int>>(0,1);
shared_ptr<int> p2(p1, &p1->second);

p1 是一个指向 std::pair<int, int> 对象的 shared_ptr,其中这个对象包含了两个整数值,分别是 0 和 1。
p2 是一个指向整数的 shared_ptr,它的构造函数接受两个参数。第一个参数是一个 shared_ptr 对象,用于共享资源的所有权,即 p2 将共享 p1 所指向的资源。第二个参数是一个原始指针,它指向被共享资源中的某个成员。在这里,&p1->second 是取得 p1 所指向的 std::pair 对象中第二个元素的地址,即整数值 1 的地址。
因此,p1 指向 std::pair<int, int>(0, 1),而 p2 指向 p1 所指向的 std::pair 对象中的第二个整数值,即整数值 1。两者的引用计相同,但指向的内容不同。
(8)owner_less:基于所有权的比较函数
owner_less

3.4 weak_ptr
没有重载operator*和->,不共享指针,不能操作资源,不会引起引用计数的增加或减少
用法示例

3.5 pool
只能作为普通数据类型的内存池,不能将其应用于复杂的类和对象,因为它只分配内存,不调用构造函数;

3.6 object_pool
3.7 singleton_pool:可以理解为就是一个静态的pool

  1. 实用工具
    4.1 noncopyable
    class do_not_copy:boost::noncopyable{…};
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 《Boost程序库完全开发指南》是一本介绍Boost程序库的权威指南,该书的第4版是最新的版本。Boost程序库是一个非常受欢迎的C++程序库集合,它提供了许多功能强大且易于使用的工具,以提高C++程序的质量和效率。 该指南全面介绍了Boost程序库的各个模块和功能,包括智能指针、容器、算法、多线程、正则表达式、日期和时间等。它提供了详细的代码示例和说明,帮助读者理解和使用Boost程序库的各种功能。 在第4版中,在之前版本的基础上进行了更新和改进。它包含了最新的Boost程序库的新功能和改进。此外,该指南还深入讲解了Boost程序库的内部工作原理和实现细节,并提供了一些高级主题,如代码优化和性能调优。 该指南适合从初学者到经验丰富的C++开发人员。对于初学者来说,它提供了对Boost程序库的全面介绍和入门指导。对于经验丰富的开发人员来说,它提供了深入了解和扩展Boost程序库的机会,以满足特定的需求。 总体来说,《Boost程序库完全开发指南 第4版》是一本非常有价值的书籍,对于想要学习和利用Boost程序库的C++开发人员来说,它是一个必备的参考资料。无论是入门者还是专家,都可以从中获得对Boost程序库的深入了解和实际应用的指导。 ### 回答2: 《boost程序库完全开发指南 第4版》是由Boris Schäling撰写的一本介绍Boost程序库的权威性书籍。本书为读者提供了全面而深入的关于Boost程序库指南和教程。Boost程序库是一个开源的、跨平台的C++集合,提供了丰富的功能和工具,可帮助开发人员加快应用程序的开发和优化。 这本书从初级到高级介绍了大量的Boost程序库,覆盖了各个方面的使用和开发技巧。读者可以通过本书学习到如何使用Boost程序库进行多线程编程、网络编程、文件系统操作、并发编程等。此外,本书还详细介绍了Boost程序库的核心组件,如智能指针、正则表达式、日期和时间等。 《boost程序库完全开发指南 第4版》的PDF版本提供了方便的电子阅读方式,读者可以随时随地学习和查阅。该版本还包括了代码示例和实践案例,帮助读者更好地理解和运用Boost程序库的知识。 总之,本书是一本权威性的、全面的Boost程序库开发指南。它对于想要学习和使用Boost程序库开发人员来说是一个宝贵的资源。无论是对于初学者还是有一定经验的开发人员,本书都能提供有益的指导和实用的技巧。通过阅读本书,读者将能够充分利用Boost程序库的强大功能,提高自己的程序开发效率和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值