• ref引用不可以复制的对象

     void print(std::ostream &os, int i)
    {
    os << i << endl;
    } //ref引用不可以复制的对象
    void main1()
    {
    vector<int> myint = { ,,,, };
    //cout是不可以拷贝的对象,以下出错
    //boost::function<void(int)> pt = boost::bind(print, cout, _1);
    //ref可以引用不可以复制的对象
    boost::function<void(int)> pt = boost::bind(print,boost::ref(cout), _1);
    for_each(myint.begin(), myint.end(), pt);
    cin.get();
    }
  • 底层是基于hasn的unordered_set集合
     //底层是基于hasn的unordered_set集合
    void main5()
    {
    boost::unordered_set<string> myhash;
    myhash.insert("");
    myhash.insert("1234a");
    myhash.insert("1234b");
    for (auto ib = myhash.begin(), ie = myhash.end(); ib != ie; ib++)
    {
    cout << *ib << endl;
    }
    cin.get();
    }
  • 独享智能指针
     void main6()
    {
    boost::scoped_ptr<int> p1(new int());//智能指针
    boost::scoped_ptr<int> p2(new int[]);//智能指针,可以分配但是不推荐
    //不可以这样,因为是独享内存
    //boost::scoped_ptr<int> p3 = p2;
    //释放
    p2.reset();
    //重新分配内存
    p2.reset(new int());
    //获取第一个
    cout << *p2.get() << endl; //智能指针,存储数组
    boost::scoped_array<int> p(new int[]);
    p[] = ;
    *p.get() = ;
    //释放内存
    p.reset();
    //重新分配内存
    p.reset(new int[]);
    cin.get();
    }
  • 共享智能指针
     class AobjC
    {
    public:
    AobjC()
    {
    cout << "构造" << endl;
    }
    ~AobjC()
    {
    cout << "析构" << endl;
    }
    protected:
    private: }; void main7()
    {
    //共享内存
    boost::shared_ptr<AobjC> p1(new AobjC);
    boost::shared_ptr<AobjC> p2(new AobjC);
    //浅拷贝
    boost::shared_ptr<AobjC> p3(p2);
    p3.reset();
    p3.reset(new AobjC);
    //计数
    p3.use_count(); boost::shared_array<AobjC> p4(new AobjC[]);
    cin.get();
    }
  • 多线程不能用shared_ptr,要用weak_ptr
     //shared智能指针,多线程不安全
    //DWORD WINAPI printout(LPVOID p)
    //{
    // boost::shared_ptr<int> *pint = static_cast<boost::shared_ptr<int>*>(p);
    // for (int i = 0; i < 5; i++)
    // {
    // cout << **pint << endl;
    // Sleep(1000);
    // }
    // return 0;
    //}
    //
    //DWORD WINAPI reset(LPVOID p)
    //{
    // boost::shared_ptr<int>*pint = static_cast<boost::shared_ptr<int>*>(p);
    // //释放内存
    // pint->reset();
    // return 0;
    //} DWORD WINAPI printout(LPVOID p)
    {
    //weak_ptr接管指针
    //传递的是int指针的地址,所以要用boost::weak_ptr<int> *pw(多一个*保存)
       //传递地址要多加一个*(指针要多一级,便于多一次读取,第一次读存储的地址,第二次读内容)
    boost::weak_ptr<int> *pw = static_cast<boost::weak_ptr<int>*>(p);
    //弱指针可以锁定,防止多线程访问一个被释放的内存
    boost::shared_ptr<int> newp = pw->lock();
    for (int i = ; i < ; i++)
    {
    if (newp)
    {
    cout << *newp << endl;
    }
    else
    {
    cout << "内存释放无法访问" << endl;
    }
    Sleep();
    }
    return ;
    } DWORD WINAPI reset(LPVOID p)
    {
    Sleep();
    boost::shared_ptr<int>*pint = static_cast<boost::shared_ptr<int>*>(p);
    //释放内存
    pint->reset();
    return ;
    } void main()
    {
    boost::shared_ptr<int> p1(new int());
    //帮助在多线程中实现内存保护,没有重载*运算符
    boost::weak_ptr<int> p2 = p1;
    HANDLE threads[];
    threads[] = CreateThread(, , reset, &p1, , );
    threads[] = CreateThread(, , printout, &p2, , );
    //C++11也有weak_ptr
    //std::weak_ptr;
    cin.get();
    }
  • 正则表达式
     //正则表达式
    void main2()
    {
    string str = "china8848english";
    boost::regex expr("\\w+\\d+\\w+");//w+字符 d+数字
    cout << boost::regex_match(str, expr);
    cin.get();
    } //找出匹配的
    void main3()
    {
    string str = "china8engli5sh";
    boost::regex expr("(\\w+)\\d(\\w+)");
    //保存匹配的
    boost::smatch what;
    if (boost::regex_search(str, what, expr))
    {
    cout << what[] << endl;
    cout << what[] << endl;
    }
    else
    {
    cout << "fail";
    }
    } //替换
    void main4()
    {
    string str = "china8engli5sh";
    boost::regex expr("(\\w + )\\d(\\w + )");
    string rp = "--------";
    cout << boost::regex_replace(str, expr, rp);
    }

10.ref regex unordered_set smartpoint的更多相关文章

  1. 10 ref 和 out 之间的差别

    (1) 两者都是按地址传递的,使用后都将改变原来的数值 (2) ref传进去的參数必须在调用前初始化,out不必 (3) ref传进去的參数在函数内部能够直接使用,而out不可 (4) ref传进去的 ...

  2. .net正则表达式大全(.net 的 System.Text.RegularExpressions.Regex.Match()方法使用)

    正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET的System.dll类库提供的System.Text.RegularExpression ...

  3. Vue学习笔记:Ref的使用

    官网上的说明 1.了解Vue中的$refs在Vue中是怎么访问到DOM元素的 <div id="app"> <h1>{{ message }}</h1 ...

  4. Regex分组与Pattern正则表达式对象

    1.正则规则:        1.String  regex  =  "[1-9]"          表示单个字符的取值范围是 1~9,注意是单个字符的取值范围        2 ...

  5. Django之Model操作

    Django之Model操作 本节内容 字段 字段参数 元信息 多表关系及参数 ORM操作 1. 字段 字段列表 AutoField(Field) - int自增列,必须填入参数 primary_ke ...

  6. django之一些feature

    前端之django一些feature 本节内容 cookie session 跨站请求保护 分页 序列化 model模块 CBV和FBV 模板渲染对象 1. cookie cookie 是一种发送到客 ...

  7. 【Django】--Model字段

    参考地址:http://www.cnblogs.com/wupeiqi/articles/6216618.html 所有字段 AutoField(Field) --int自增列,必须填入参数prima ...

  8. Python-Django进阶

    1. 路由系统 浏览器会自动给url后加一个"/" django会自动给路由的正则表达式前面加一个"/" django会给任何不带"/"结尾 ...

  9. 推荐的PHP编码规范

    推荐的PHP编码规范 发布时间: 2014-05-7 浏览次数:2754 分类: PHP教程 推荐的PHP编码规范 一 编辑器设置 1. 使用Tab缩进,不要使用空格 鉴于很多编辑器在保存文件时会自动 ...

随机推荐

  1. USACO 1.5 Superprime Rib

    Superprime Rib Butchering Farmer John's cows always yields the best prime rib. You can tell prime ri ...

  2. js接收文件流并下载

    js接收文件流并下载 标签(空格分隔): js 在此输入正文 <script type="text/javascript"> function download(fil ...

  3. 个人作业—Alpha项目测试

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2 这个作业要求在哪里 https://edu.cnblo ...

  4. Comparable与Comparator区别(实现和使用)

    一.Comparable接口 1.Comparable接口是什么? 此接口强行对实现它的每个类的对象进行整体排序.此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 . ...

  5. ffmpeg x264编译与使用介绍

    问题1:我用的是最新版本的ffmpeg和x264,刚刚编译出来,编译没有问题,但是在linux 环境使用ffmpeg的库时发现报错error C3861: 'UINT64_C': identifier ...

  6. Building Block[HDU2818]

    Building Block Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...

  7. Activiti Modeler 5.22.0整合到Spring项目

    转载 https://blog.csdn.net/u010411264/article/details/71480354

  8. Hihocoder1061-Beautiful String

    时间限制:10000ms单点时限:1000ms内存限制:256MB 描述 We say a string is beautiful if it has the equal amount of 3 or ...

  9. what is udev?

    如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略.在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev ...

  10. IOS - 6\7下UINavigationBar的颜色的方法改变 ——转载http://www.th7.cn/Program/IOS/201310/155057.shtml

    IOS7下设置UINavigationBar的颜色的方法已经改变(当然如果是用自定义图片的话请忽略---) 首先是区别iOS7和之前版本的方法如下: //如果是iOS7以前的话if (floor(NS ...