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...