38 inline void mtree
39 {
40 assert(tree_&&off_<=tree_->size());
41 off_!=tree_->size() forward_prev() : first(reverse_tag());
42 }
43 template
44 template
45 inline void mtree
46 {
47 assert(tree_&&off_<=tree_->size());
48 off_!=tree_->size() forward_prev() : last(no_reverse_tag());
49 }
50 template
51 template
52 inline void mtree
53 {
54 assert(tree_&&off_<=tree_->size());
55 off_!=tree_->size() forward_next() : last(reverse_tag());
56 }
四、使用示例
(1)正向遍历整颗树,代码如下:
1 mtree
2 mtree
3 mtree
4 mtree
5 for (it = it.begin();it!=it.end();++it)
6 {
7 cout << *it;
8 if (it!=last)
9 cout <<" ";
10 }
(2)反向遍历整颗树 ,代码如下:
1 mtree
2 mtree
3 mtree
4 mtree
5 for (r_it = r_it.begin();r_it!=r_it.end();++r_it)
6 {
7 cout << *r_it;
8 if (r_it!=r_last)
9 cout <<" ";
10 }