boost库使用:仿SGI-STL实现的一个树节点内存allocator


 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

boost库使用:仿SGI-STL实现的一个树节点内存allocator的相关文章

Boost库初见

Boost库是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++库,有C++"准"标准库的美称! Boost有着与其它程序库(如MFC等)无法比拟的优点. Boost库采用了类似STL的编程范式,但却没有STL那样晦涩难懂,代码格式优美清晰.已于阅读. Boost库涵盖字符串与文本处理.容器.迭代器.算法.图像处理.正则表达式.并发变成等领域. 使用Boost,将大大增强C++的功能和表现力. 官方网址:http://www.boost.org/ 下载:http://www.bo

模拟实现c++标准库和boost库中的智能指针

我们知道c++标准库中定义了智能指针auto_ptr,但是我们很少用它,因为虽然它能够自动回收动态开辟的内存,不需要程序员自己去维护动态开辟的内存,但是当用它去赋值或者是拷贝构造时有一个管理权转移的过程,这样我们就不能很方便的使用auto_ptr. 下面是简单的auto_ptr的实现,我们可以看到在复制和赋值时它将转移管理权. template<class T> class AutoPtr { public:      AutoPtr(T* ptr)       :_ptr(ptr)     

SGI STL源码stl_bvector.h分析

前言 上篇文章讲了 STL vector 泛化版本的实现,其采用普通指针作为迭代器,可以接受任何类型的元素.但如果用来存储 bool 类型的数据,可以实现功能,但每一个 bool 占一个字节(byte),而一个字节有 8 位(bit),这样就有点浪费了.所以 SGI STL 设计了一个特化版本的位向量容器 bit_vector 来节省空间内存.bit_vector 是一个 bit 位元素的序列容器,具有 vector 容器一样的成员函数,常用于硬件端口的控制. 原文地址:https://www.

在win7 + vs express for desktop中安装stlport和boost库

一.安装stlport stlport是将sgi的stl库平移到各个平台上.sgi的这个库的特点就是效率非常高.boost在这个库上面运行要比vs自带的stl库效率高.所以我们首选安装stlport. 下载stlport:http://sourceforge.net/projects/stlport/ 最新版本是5.2.1 放到C盘根目录下面,解压.进入"vs2012 x86 native tools command prompt".(注意:用cmd不行) 进入"C:\STL

C++11和Boost库

C++11标准中引入了很多Boost库中的东西,对于所有人来说,完全可以使用C++11来替代之前使用的boost库. 但是还有一些事项需要我们注意. 发现了一篇好文,出处: https://meetingcpp.com/index.php/br/items/c11-and-boost.html Some parts of the Standard Library in C++11 are predated in boost. When playing around with C++11, you

boost库在工作(15)绑定器与函数对象之三

前面已经可以优美地解决两个参数的函数给算法for_each调用了,但是又会遇到这样的一种情况,当需要三个参数或者三个以上的参数给算法for_each调用呢?从STL里的绑定器bind1st,显然是不行了,因为它最多只支持两个参数,那还有什么办法呢?这时就需要使用boost库里强大的绑定器bind了.它不仅适用的情况比STL库里的多,还更加方便,更加人性化.下面就来看看怎么样绑定三个参数的类成员函数的例子,如下: [cpp] view plaincopy //调用类的成员函数,但参数两个以上. /

C++ Boost库简介(一些自己的感受)

boost是一个准标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化.不过对比STL,boost更加实用.STL集中在算法部分,而boost包含了不少工具类,可以完成比较具体的工作. boost主要包含一下几个大类:字符串及文本处理.容器.迭代子(Iterator).算法.函数对象和高阶编程.泛型编程.模板元编程.预处理元编程.并发编程.数学相关.纠错和测试.数据结构.输入/输出.跨语言支持.内存相关.语法分析.杂项. 有一些库是跨类别包含的,就是既属于

《超越C++标准库:Boost库导引》:序

序(Foreword) C++社区正在发生着一些美妙的事情.尽管C++仍然是世界上使用最广泛的编程语言,它依旧在变得更加强大而且易用.不信么?容我慢慢道来. 当前版本的标准C++是在1998年最终确定下来的,它为传统的过程式编程(procedural programming)以及面向对象和泛型编程(generic programming)提供了强有力的支持.正如老的(1998年以前的)C++单枪匹马地把面向对象引入软件开发者日常工作可及的范围那样,C++98针对泛型编程做了同样的事情.1990年

C++ Primer 学习笔记_56_STL剖析(十一)(原boost库):详解智能指针(unique_ptr(原scoped_ptr) 、shared_ptr 、weak_ptr源码分析)

注意:现在boot库已经归入STL库,用法基本上还和boost类似 在C++11中,引入了智能指针.主要有:unique_ptr, shared_ptr, weak_ptr. 这3种指针组件就是采用了boost里的智能指针方案.很多有用过boost智能指针的朋友,很容易地就能发现它们之间的关间: std boost 功能说明 unique_ptr scoped_ptr 独占指针对象,并保证指针所指对象生命周期与其一致 shared_ptr shared_ptr 可共享指针对象,可以赋值给shar