zoukankan      html  css  js  c++  java
  • boost库使用:仿SGI-STL实现的一个树节点allocator

     1 //////////////////////////////////////////////////////////////////////////
     2 //code by hzs
     3 //email: huangzhesi@gmail.com
     4 //Last modified: 2014-5-18 21:05
     5 //////////////////////////////////////////////////////////////////////////
     6 
     7 #ifndef _TREE_NODE_ALLOC_H
     8 #define _TREE_NODE_ALLOC_H
     9 
    10 #include <boost/pool/pool_alloc.hpp>
    11 
    12 //树节点内存管理:仿SGI-STL-(rb-tree)
    13 
    14 //arg1: 树节点的值
    15 //arg2: 树节点
    16 template<typename Value, typename tree_node>
    17 class TreeNodeAlloc {
    18 public:
    19     typedef Value value_type;
    20     typedef tree_node* link_type;
    21 
    22     typedef boost::fast_pool_allocator<tree_node> Tree_Node_Alloc;    //使用boost::fast_pool_allocator
    23     Tree_Node_Alloc tree_node_alloc_;
    24 
    25     link_type get_node() { return Tree_Node_Alloc::allocate(); }    //分配内存空间
    26     void put_node(link_type p) { Tree_Node_Alloc::deallocate(p); }    //回收内存空间
    27 
    28     link_type create_node(const value_type& x) {
    29         link_type tmp = get_node();
    30         tree_node_alloc_.construct(tmp, tree_node());    //构造(若tree_node中均为POD则无需此步)
    31         tmp->value_field = x;    //给值域赋值
    32 
    33         return tmp;
    34     }
    35 
    36     void destroy_node(link_type p) {
    37         tree_node_alloc_.destroy(p);    //析构(无构造则无析构)
    38         put_node(p);
    39     }
    40 };
    41 
    42 #endif
    
    
    
     
  • 相关阅读:
    java之 向上转型与向下转型
    java之 惰性初始化
    mysql 学习网站
    history of program atan2(y,x)和pow(x,y)
    atom 之 前端必备插件
    js之正则表达式
    Django之模型层
    每日作业5/28
    每日作业5/27
    每日作业5.26
  • 原文地址:https://www.cnblogs.com/hzhesi/p/3735697.html
Copyright © 2011-2022 走看看