ACE篇之十一 ACE容器之六(自調整的二叉樹)

2021-05-04 06:42:47 字數 1168 閱讀 5679

1、ace提供的樹實現為紅黑樹,名為ace_rb_tree,介面與對映表類似,其實現實際上是乙個值容器。型別定義是:

ace_rb_tree

2、測試類:tree_practice.h

#include "ace/rb_tree.h"

#include "dataelement.h"

//紅黑樹型別封裝成助手模板類little helper class

//ext_id--鍵值型別,int_id--元素型別

template

class tree:public ace_rb_tree,ace_null_mutex>

{};//鍵型別:

class tree_test

}//查詢元素,查詢複雜度也是o(lgn)

ace_debug((lm_debug,ace_text("using find:/n")));

for(int j=0;j<100;j++)

ace_debug((lm_debug,ace_text("/n")));

//前向迭代

this->iterate_forward();

//後向迭代

this->iterate_reverse();

//移除所有元素

ace_assert(this->remove_all()!=-1);

//前向迭代

this->iterate_forward();

return 0;

}//前向迭代測試

//執行結果:0:1:2:...99

void iterate_forward(void)

ace_debug((lm_debug,ace_text("/n")));

}//後向迭代測試

//執行結果:99:98:97:...0

void iterate_reverse(void)

ace_debug((lm_debug,ace_text("/n")));

}//移除所有元素

int remove_all(void)

ace_assert(d!=0);

//元素在堆中建立的,需要清理記憶體,否則將造成記憶體洩漏

delete d;

}return 0;

}private:

treetree_;

};

ACE篇之六 ACE容器之二(棧)

1 前言 棧是lifo序列 後進先出 ace既支援動態棧,也支援靜態棧,靜態棧的尺寸固定,使用代價較低。ace提供了兩種靜態棧 有界棧ace bounded stack和固定棧ace fixed stack。動態棧在每次插入時候分配記憶體,每次彈出時候釋放該記憶體,即無界棧ace unbounded...

ACE篇之九 ACE容器之四(集合)

1 前言 集合是不允許其所含條目重複的序列。ace有兩種集合 有界集合和無界集合,即ace bounded set和ace unbounded set。它們支援插入 查詢 迭代。2 測試完整源 如下 原書本有多處錯誤 include ace containers.h include dataelem...

ACE篇之九 ACE容器之五(集合)

1 前言 集合是不允許其所含條目重複的序列。ace有兩種集合 有界集合和無界集合,即ace bounded set和ace unbounded set。它們支援插入 查詢 迭代。2 測試完整源 如下 原書本有多處錯誤 include ace containers.h include dataelem...