【发布时间】:2015-06-15 17:52:01
【问题描述】:
我试图从地图中构建一棵树,以显示具有基类和派生类的类层次结构。一个节点可以有多个子节点和子节点
这是我的代码:
std::map<std::string, std::string> myClassMap; // 1. String (key) = Classname, 2. String = BaseClass
myClassMap.insert ( std::pair<std::string, std::string>("DerivedClass1", "OverallBaseClass"));
myClassMap.insert ( std::pair<std::string, std::string>("DerivedClass2", "OverallBaseClass"));
myClassMap.insert ( std::pair<std::string, std::string>("DerivedClass3", "OverallBaseClass") );
myClassMap.insert ( std::pair<std::string, std::string>("DerivedClass2-1'","DerivedClass2") );
myClassMap.insert ( std::pair<std::string, std::string>("DerivedClass2-1-1","DerivedClass2-1") );
myClassMap.insert ( std::pair<std::string, std::string>("DerivedClass2-1-2","DerivedClass2-1") );
myClassMap.insert ( std::pair<std::string, std::string>("DerivedClass2-2","DerivedClass2") );
//and so on
我有一个方法:
void addTreeChild(QTreeWidgetItem *parent, std::string keyClassName)
{
QTreeWidgetItem *treeItem = new QTreeWidgetItem();
treeItem->setText(0, QString(keyClassName));
parent->addChild(treeItem);
}
我可以调用它并将孩子添加到树中。 现在我的问题是,我怎样才能遍历地图,并将孩子添加到我的树中,所以它会出现一个类层次结构
【问题讨论】:
-
我不清楚。你有
addTreeChildren添加一个孩子,还是没有?如果您已经拥有它,为什么需要帮助“将孩子添加到我的树中”?而且,您在遍历地图时在做什么?简而言之,您的实际问题是什么? -
对不起,我更新了我的问题。我确实有一个方法,但只在子级下添加子级,没有层次结构(DerivedClass1/2/3 继承自OverallBaseClass)-->短,如何将项目添加到具有正确层次结构的树中?跨度>
标签: c++ tree stdmap tree-traversal