zoukankan      html  css  js  c++  java
  • 【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

  • 相关阅读:
    Node.js NPM 包(Package)
    Node.js NPM 作用
    Node.js NPM 介绍
    Node.js NPM 教程
    Node.js NPM 教程
    Node.js 发送Email
    Node.js 上传文件
    Node.js 事件
    Node.js NPM
    Node.js 文件系统模块
  • 原文地址:https://www.cnblogs.com/elesos/p/2760702.html
Copyright © 2011-2022 走看看