• allocator


    标准库allocator类及其算法:

    操作解释
    allocator<T> a 定义了一个名为aallocator对象,它可以为类型为T的对象分配内存
    a.allocate(n) 分配一段原始的、未构造的内存,保存n个类型为T的对象。
    a.deallocate(p,n) 释放从T*指针p中地址开始的内存,这块内存保存了n个类型为T的对象;p必须是一个先前由allocate返回的指针。且n必须是p创建时所要求的大小。在调用deallocate之前,用户必须对每个在这块内存中创建的对象调用destroy
    a.construct(p,args) 使用allocator分配的内存构造对象
    p
    必须是一个类型是T*的指针 指向一块原始内存;args是多个额外的参数用来匹配类型T的对应构造函数,在p指向的内存中构造一个对象。
    a.destroy(p) pT*类型的指针,此算法对p指向的对象执行析构函数。
    • 为了使用allocator返回的内存必须使用construct构造对象,使用destroy析构了对象后可以重新使用这部分内存保存其他T类型元素,也可以使用deallocate释放对应内存将其归还给系统。
      • allocator<string> alloc;
      • auto p = alloc.allocate(10); 
      • alloc.construct(p, 8 "c");  //*p为cccccccc
      • auto q = p++;
      • alloc.destroy(p);   alloc.deallocate(p); 

    allocator伴随算法:

    标准库为allocator类定义的两个伴随算法,可以在为初始化的内存中创建对象。#include <memory>

    操作解释
    uninitialized_copy(b, e, b2) 从迭代器be给定的输入范围中拷贝元素到迭代器b2指定的未构造的原始内存中。b2指向的内存必须足够大,能够容纳输入序列中元素的拷贝。
    uninitialized_copy_n(b, n, b2) 从迭代器b指向的元素开始,拷贝n个元素到b2开始的内存中。
    uninitialized_fill(b, e, t) 在迭代器be执行的原始内存范围中创建对象,对象的值均为t的拷贝。
    uninitialized_fill_n(b, n, t) 从迭代器b指向的内存地址开始创建n个对象。b必须指向足够大的未构造的原始内存,能够容纳给定数量的对象。
    • 返回最后一个构造元素之后的位置
  • 相关阅读:
    4.28
    12.27
    12.24
    ———————————关于一些加密博文!——————————
    博客创办目的——————欢迎相互学习
    7-14 最短工期
    指针的浅谈用于初学者
    知识点扫盲加基本板子总结
    优质文章推荐,长期更新
    杭州电子科技大学2018多校测试第一场
  • 原文地址:https://www.cnblogs.com/Real-Ying/p/12834113.html
Copyright © 2020-2023  润新知