网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

自定义C++容器内存分配器-创新互联

查看STL中vector、list源码
template>class vector {// varying size array of values
private:
    templatefriend class _Vb_val;
    friend _Tidy_guard;

    using _Alty        = _Rebind_alloc_t<_Alloc, _Ty>;
    using _Alty_traits = allocator_traits<_Alty>;
    ...........
template>class list {// bidirectional linked list
private:
    templatefriend class _Hash;
    templatefriend bool _Hash_equal(const _Hash<_Traits>&, const _Hash<_Traits>&);

    using _Alty          = _Rebind_alloc_t<_Alloc, _Ty>;
    using _Alty_traits   = allocator_traits<_Alty>;
    using _Node          = _List_node<_Ty, typename allocator_traits<_Alloc>::void_pointer>;
    using _Alnode        = _Rebind_alloc_t<_Alloc, _Node>;
    using _Alnode_traits = allocator_traits<_Alnode>;

可以看到STL中vector 和 list的分配器,是采用编译器默认提供的 allocator 分配器。

专注于为中小企业提供成都网站设计、成都做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业罗城免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了近1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。自定义C++ 容器 内存分配器
  1. 我们可以自己定义容器的分配器,让容器在分配内存的时候,按照我们自己的想法进行。
    代码如下:
#include#include#include#include#include#include#include 
#include#includeusing namespace std;

class Xdata
{public:
    int m_index;
    Xdata()
    {cout<< "call Xdata()"<< endl;
    }
    Xdata(const Xdata& obj)
    {this->m_index = obj.m_index;
        cout<< "call Xdata(const Xdata& obj)"<< endl;
    }
    ~Xdata()
    {cout<< "call ~Xdata()"<< endl;
    }
};

templateclass MyAllocator
{public:
    using value_type = T;

    MyAllocator() {}

    templateMyAllocator(const MyAllocator&) {}

    T* allocate(const size_t count)
    {cout<< "T* allocate(const size_t count)"<< endl;
        cout<< "typeid(T).name():"<< typeid(T).name()<< endl;
        return static_cast(malloc(sizeof(T)*count));
    }

    void deallocate(T* const ptr, const size_t count)
    {cout<< "void deallocate(T* const ptr, const size_t count)"<< endl;
        free(ptr);
    }
};

int main() {vector>vec;

    Xdata x1;
    x1.m_index = 1;
    vec.push_back(x1);

    cout<< "==========================="<< endl;

    list>list_data;
    Xdata x2;
    x2.m_index = 2;
    list_data.push_back(x2);

    return 0;
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站题目:自定义C++容器内存分配器-创新互联
文章URL:http://bjjierui.cn/article/dipsoj.html

其他资讯