对于平台无关模型层,我看起来像这样的分层数据(字符串,实际上):这个层次模型数据是否有一个stl容器?
- 项目A
- 子项目一
- 子项目乙
- 子项目Ç
- SubSubItem A
- SubSubItem B
- 子项目d
- 项B
- 项C
现在,每个 “水平”(项目,子项,SubSubItem等)内的项目需要字母顺序排序。
似乎一个简单的解决方案是创建一个简单的类,使用排序后的std :: Vector或std :: MultiMap来跟踪它的子元素,以及一个指向其Parent的指针。 (和一个根项目)。我需要通常在前进方向上遍历每个项目的孩子。
施工/分拣后,我不需要添加或删除项目。通常少量的项目(数百)。
这是用于大纲样式控件的后台数据的模型组织。
滚动一个简单的类很容易,但是这是一个很常见的模式 - 是不是已经有一个现成的STL容器了?
谢谢 - 这是一个优雅的班级。它在GPLv2/GPLv3下获得许可。我正在开发商业软件。如果我不以任何方式修改代码,我是否需要分发任何源代码? – SMGreenfield 2013-05-09 04:30:17
嗯,我不是一个专家,但它听起来像[你需要这样做](https://www.gnu.org/licenses/gpl-faq.html#GPLInProprietarySystem)。您也许可以使用[Boost中的属性树类](http://www.boost.org/doc/libs/1_53_0/doc/html/property_tree.html)。 – Corey 2013-05-09 05:13:28
@SMGreenfield - 我得出同样的结论,这个班不适合商业应用。 – MarkB 2013-05-11 12:22:15