看流星社区

 找回密码
 注册账号
查看: 1641|回复: 0

boost_shared_ptr放入set和vector中

[复制链接]

该用户从未签到

发表于 2017-6-2 11:01:03 | 显示全部楼层 |阅读模式
shared_ptr放入set和vector中
#include <vector>
#include <set>
#include <iostream>
#include <algorithm>
#include <boost/shared_ptr.hpp>

using namespace std;
struct Foo{
    Foo(int _x) : x(_x){}
    ~Foo()
    {
        cout<<"~Foo()"<<endl;
    }
    int x;
};
typedef boost::shared_ptr<Foo> FooPtr;

struct FooPtrOps{
    void operator() ( const FooPtr &amp; a )
    {
        cout<< a->x <<endl;
    }
  bool operator()( const FooPtr &amp; a, const FooPtr &amp; b )
    { return a->x > b->x; }
};

int main()
{
    vector<FooPtr>  foo_vector;
    set<FooPtr, FooPtrOps> foo_set;

    FooPtr foo_ptr(new Foo(2));
    foo_vector.push_back(foo_ptr);
    foo_set.insert(foo_ptr);
   
    foo_ptr.reset(new Foo(1));
    foo_vector.push_back(foo_ptr);
    foo_set.insert(foo_ptr);
   
    foo_ptr.reset(new Foo(3));
    foo_vector.push_back(foo_ptr);
    foo_set.insert(foo_ptr);
   
    foo_ptr.reset(new Foo(2));
    foo_vector.push_back(foo_ptr);
    foo_set.insert(foo_ptr);
   
   
    foo_ptr.reset(new Foo(4));
    foo_vector.push_back(foo_ptr);
    foo_set.insert(foo_ptr);
   
    cout<<"foo_vector"<<endl;
    for_each(foo_vector.begin(), foo_vector.end(), FooPtrOps() );
    cout<<"foo_set"<<endl;
    for_each(foo_set.begin(), foo_set.end(), FooPtrOps() );

    return 0;
}
[/code]
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-19 11:28

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表