【问题标题】:index trees with c++/boost [closed]使用 c++/boost 的索引树 [关闭]
【发布时间】:2012-07-20 15:16:25
【问题描述】:

我想做下一棵树:

                                      1     
                    1.1                                 1.2  
       1.1.1                 1.1.2          1.2.1                1.2.2
 1.1.1.1   1.1.1.2                                         1.2.2.1   1.2.2.2 

最后我有一个列表,所有索引的最终级别如下,(无序):

1.2.2.2
1.2.2.1
1.1.1.2
1.2.1        
1.1.2 
1.1.1.1 

如何使用 boost 库以这种方式进行索引并像这样对它们进行排序:

1.1.1.1 
1.1.1.2
1.1.2 
1.2.1   
1.2.2.1   
1.2.2.2

【问题讨论】:

  • 您具体遇到了什么问题?
  • 我只是在看靴子手册。
  • 那么如何以这种形式索引,然后如何对这种索引进行排序。

标签: c++ boost


【解决方案1】:

如果你真的认为你需要使用 Boost,那么显而易见的去处是Boost Graph Library。然而,老实说,这有点像使用核武器杀死蚊子。

第一部分是一个简单的二叉树,甚至不需要平衡,所以它只是在适当的地方遍历和插入项目的问题。获得结果也同样简单——遍历树,当且仅当它是叶子时才向输出添加一个节点。

对结果进行排序需要std::sort 以及一个比较每个项目中各个元素的比较函数。如果您确定每个元素只有一个数字,则可以改用简单的词法比较。

【讨论】:

  • 问题是如何使用std::sort对这种类型的索引进行排序。
  • @user1310873:正如我所说,您基本上需要将字符串分成几部分(用“.”分隔),将每一部分转换为一个数字,然后比较这些数字。正如我也说过的,如果每个部分总是一个数字,你可以只做一个普通的字符串比较(但你可能不希望那样,因为如果你得到一个两位数,它会中断)。
  • 好的,我意识到如果我将 0 添加到与另一个数字一样少的索引中,我可以对它们进行排序。 1111 1112 1120 1210 1221 1222
猜你喜欢
  • 1970-01-01
  • 2015-08-22
  • 1970-01-01
  • 2012-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多