• allocator 类


    allcator是一个模板类

    定义在memory头文件中,将内存分配与对象构造分开,分配的内存是原始的、未构造的

    一、how to use

    因其实一个类,则使用allcator时需要首先声明一个类对象

    allocator<type> alloc;  //type指明allocator可以分配的对象类型,alloc为对象
    

    用对象分配内存

    auto p=alloc.allocate(n);  
    // 分配n个未初始化的 type 
    

    一些用法

    alloc.deallocate(p,n) 
    // 释放从type*指针p中地址开始的内存,这块地址保存了n个类型为type的对象
    // p必须是一个先前由allocate返回的指针
    // 在调用此函数之前,用户必须对每个在这块内存中创建的对象调用destroy
    
    alloc.construct(p,args)
    //在p指向的内存中构造一个值为args的对象
    
    alloc.destroy(p)
    // 对p指向的对象执行析构函数
    

    通俗的来讲,allocator是一个向系统申请一段内存空间的工具,申请的内存空间就相当于一片空地

    为了利用这片空地我们需要construct一些东西,construct后,如果不要这些东西了,就要destroy掉这些对象,之后如果不要这块地了,就上交给国家deallocate

    二、拷贝与填充未初始化内存

    用allocator申请内存空间,不一定能够用完,对于剩下的内存空间有如下的使用方法

    uninitialized_copy(b,e,b2);
    // 从迭代器b和e指出的输入范围中拷贝到b2指定的位置,返回指向最后一个元素之后的指针
    
    uninitialized_copy_n(b,n,b2);
    // 从迭代器b指出的位置开始拷贝n个元素到b2指定位置,返回指向最后一个元素之后的指针 
    uninitialized_fill(b,e,t); 
    // 在迭代器b到e指定的范围中创建对象值均为t的拷贝
    
     uninitialized_fill(b,n,t); 
    // 类似
    

      

  • 相关阅读:
    统计难题(字典树 模版题)
    hadoop2.2.0集群安装
    HDU 3068 回文串--Manacher
    Poj 3974 回文串--Manacher
    word模版另存为网页(*.htm,*.html),转为jsp页面并加入数据后导出成word
    OpenCV——字符提取并保存
    直线检测
    图像切边
    OpenCV 中轮廓包裹的几个函数boundingRect、minAreaRect、minEnclosingCircle用法
    使用级联分类器实现人脸检测(OpenCV自带的数据)
  • 原文地址:https://www.cnblogs.com/KennyRom/p/5876695.html
Copyright © 2020-2023  润新知