1 //////////////////////////////////////////////////////////////////////////
2 //code by hzs
3 //email: [email protected]
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
boost库使用:仿SGI-STL实现的一个树节点内存allocator,布布扣,bubuko.com
时间: 2024-10-08 10:28:08