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
    
    
    
     
  • 相关阅读:
    获取URL的name值 getUrl(url,name) 传入url和key 得到key对应的value
    封装GetQueryString()方法来获取URL的value值
    判断设备
    RecyclerView 加点击事件
    SparseArray,SparseBooleanArray和SparseIntArray
    内存泄漏监测-LeakCanary
    StrictMode
    数据结构-线性结构
    程序设计语言基础-知识点
    数据结构-概念
  • 原文地址:https://www.cnblogs.com/hzhesi/p/3735697.html
Copyright © 2011-2022 走看看