• 【Boost】系列03:内存管理之shared_ptr智能指针


    最有价值的!最有用的引用计数型智能指针,可以被拷贝和赋值,可以作为STL容器的元素;

    1,基本用法:

    #include <boost/smart_ptr.hpp>
    #include <assert.h>
    using namespace boost;
    int main()
    {
        shared_ptr<int> sp(new int(10));
        assert(sp.unique());
    
        shared_ptr<int> sp2 = sp;
        assert(sp == sp2 && sp.use_count() == 2);
        *sp2 = 100;
        assert(*sp == 100);
    
        sp.reset();
        assert(!sp);
    
        return 0;
    }

    2,make_shared用法:

    #include <boost/smart_ptr.hpp>
    #include <vector>
    #include <boost/make_shared.hpp>
    using namespace std;
    using namespace boost;
    
    int main()
    {
    
        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;
    
        cout<<v[9].use_count()<<endl;
        cout<<"v[9]="<<*v[9]<<endl;    
    
        shared_ptr<int> p = v[9];
        cout<<v[9].use_count()<<endl;
        *p = 100;
        cout<<*v[9]<<endl;
    
        return 0;
    }

    输出:

    1, 2, 3, 4, 5, 6, 7, 8, 9, 10,

    1

    v[9]=10

    2

    100

  • 相关阅读:
    Ubuntu16.04下搭建LAMP环境
    关于下载SAE日志签名认证的方法——PHP版
    时隔这么长时间,又回来写博客了
    转战网站后台与python
    学习之路
    周末随笔
    Shell基础-环境变量配置文件
    关于骑行
    MYSQL 8.0 linux安装步骤
    一个golang项目笔记 (二) 动态加载库
  • 原文地址:https://www.cnblogs.com/elesos/p/2760702.html
Copyright © 2020-2023  润新知