关于STL与树
来源:互联网 发布:redmine 迁移数据库 编辑:程序博客网 时间:2024/06/10 04:17
最近需要使用到树结构,想在STL中找个现成的,结果没找到,怪哉!树也是常用数据类型啊,STL居然不提供?于是,又奔BOOST去找,结果还是没找到.于是,我就奇怪了,为什么这些库,都不提供树这个类型呢?
STL中不提供树,首先,这绝对不是STL设计者的疏忽,因为map就是通过平衡二叉树来实现的.
于是,我尝试着用STL的元素,来自己写一颗树,却发现,其实,STL中根本就不需要树,或者说,它已经隐性实现了树.
定义节点:
class CTreeNode
{
public:
Type Data;
vector< CTreeNode > Children;
}
这个节点一出来,相信诸位也就明白了,这已经是一颗树了.
或许还有人会有疑问,你这不是啥方法都没封装吗?
是的,没有封装任何方法.你或许需要封装一些方法,但这绝对不是STL需要单独实现树这种类型的理由.
树最最常用的操作,是添加节点和遍历节点.而像查询删除之类的操作,其使用频率比这两个也要少许多.
如果要封装上面四个操作,你会发现,其实使用起来,其方便程度,还远不如直接把Children暴露出来,让需要树的对象去直接操纵它.
STL,我个人认为,解决的最大问题,是内存管理(虽然它没有完全优美地解决).而上述的树,通过vector(其实set,list也都可以,但vector还是常用些),我们已经不需要那么费劲去考虑内存的分配与释放的问题,那么,我们还需要自己用指针写颗树吗?完全没有必要.
我也是看到网上有人专门写了个树结构,才有此感想,写下此文.但本人确实还是一菜鸟,若说得有什么不对,敬请指正,谢谢!
- 关于STL与树
- 关于STL
- 关于STL
- stl里关于heap的函数与priority_queue的区别
- 关于C++的STL的学习与再认识(一)
- 关于c++的STL的学习与再认识(二)
- 关于c++中的STL的学习与再认识(三)
- 关于STL的意义
- 关于STL算法
- STL关于排序
- 关于STL一些
- 关于STL list::sort
- 关于STL Allocator
- STL 关于find()
- 关于C++和STL
- 关于STL的迭代器
- 关于STL allocator
- 关于优先级队列STL
- 事务演示--游标
- 触发器
- POJ1012解题报告
- 华尔街影片
- 大客户顾问的品质
- 关于STL与树
- Code::Blocks 编译参数的相关设置
- C++ main()函数及其参数
- 一些要点
- 明天要幸福
- enjoy 问候相关
- 在T-SQL中创建和使用表值参数2 [转]
- PHP中常用的数组函数
- C#利用GetFiles方法取得文件,结合Array.Sort来排序文件列表顺序