相关疑难解决方法(0)

什么是一个好的和稳定的C++树实现?

我想知道是否有人可以推荐一个好的C++树实现,希望有一个stl兼容,如果可能的话.

为了记录,我之前已经多次编写树算法,我知道它可以很有趣,但是如果可能的话,我想要务实和懒惰.因此,实际的工作解决方案链接就是目标.

注意:我正在寻找一个通用树,而不是平衡树或地图/集,在这种情况下,结构本身和树的连接性很重要,而不仅仅是数据.因此,每个分支都需要能够保存任意数量的数据,并且每个分支应该是可单独迭代的.

c++ tree graph-theory

42
推荐指数
3
解决办法
7万
查看次数

python中的树库

是否有数据树的python库?

我的意思是树作为一般数据结构,而不仅仅是一个xml树.(就像在这个问题中,但在python中.)

python tree

19
推荐指数
2
解决办法
4万
查看次数

类(或结构)按模板自引用

以下是合法的吗?

template< typename T >
struct tree_node
   {
   T t;
   std::vector<tree_node> children;
   };
Run Code Online (Sandbox Code Playgroud)

这篇文章的评论似乎表明事实并非如此.


编辑:这不会打击我作为"未定义的行为"类型的场景.预期的语义是明确的.如果它是不完整类型的无效用法,那么它应该是编译时错误.

在我的测试中,这似乎工作正常(我使用了GCCClang - 两者都有-Wall -Werror -std=c++11).

语言定义中是否有某些东西(在C++ 17之前)直接或间接地将其指定为未定义的行为,或者它只是指定不足


请记住,这在结构上非常类似于以下内容:

typedef int T;
struct tree_node;

struct tree_node
   {
   T t;
   tree_node * children;
   }
Run Code Online (Sandbox Code Playgroud)

c++ class language-lawyer self-reference

10
推荐指数
1
解决办法
856
查看次数

这个分层模型数据是否有一个stl容器?

对于独立于平台的模型层,我有分层数据(实际上是字符串),如下所示:

  • 项目A.
    • 子项目A.
    • 子项目B.
    • SubItem C.
      • SubSubItem A.
      • SubSubItem B.
    • SubItem D.
  • 项目B.
  • 项目C.

现在,在每个"级别"(Item,SubItem,SubSubItem等)中,项目需要按字母顺序排序.

似乎一个简单的解决方案是创建一个带有排序的std :: Vector或std :: MultiMap的简单类来跟踪它的Children,以及指向它的Parent的指针.(和一个根项目).我需要一般地向前遍历每个项目的孩子.

构建/排序后,我不需要添加或删除项目.通常少量的物品(数百).

这是用于轮廓样式控件的后备数据的模型组织.

滚动一个简单的类很容易,但这是一个常见的模式 - 是不是已经有一个现成的STL容器有这种行为?

c++ sorting containers stl

7
推荐指数
1
解决办法
1464
查看次数

递归STL映射

我正在尝试制作一棵地图树(或者只是将一个地图的值指向另一个地图),但我不太确定如何解决这个问题。我找到了关于此的讨论:http://bytes.com/topic/c/answers/131310-how-build-recursive-map但我对那里发生的事情有点困惑。

例如,我的键是一个字符,我的值是下一个地图。这是假设的声明:

map< char, map< char, map< char.......>>>>>>>>>> root_map;
Run Code Online (Sandbox Code Playgroud)

c++ recursion dictionary stl

5
推荐指数
1
解决办法
4990
查看次数

在 C++ 中制作嵌套列表的最佳方法是什么?

对于那些了解 Python 的人来说,解释我想要什么的最好方法是通过类比:

[1, [2, 3], 4, [5, [6]], 7]
Run Code Online (Sandbox Code Playgroud)

显然,我可以实现我自己的类(模板)来做到这一点,但是如果标准库已经发明了这个轮子,我想避免重新发明它(或者至少,避免将我半生不熟的重新发明的版本放入我的项目)。

c++ data-structures

4
推荐指数
1
解决办法
125
查看次数

C++中的段树的STL

是否有段树的STL?

在竞争性编程中,需要花费大量时间来编写seg树.我想知道是否有任何STL,以便节省大量时间.

c++ algorithm stl segment-tree

3
推荐指数
2
解决办法
4572
查看次数

C - 是否将数组重新分配到数组,其大小是动态数据结构中的两倍?

最近我用C编写了很多代码,我注意到,在我的程序中花费大部分时间的事情是调整动态数据结构的大小.假设我们有一个包含字符的数组,我想在这个数组的末尾添加一些字符.我这样做:

  1. 检查是否分配了足够的内存.
  2. 如果没有,realloc数组到大小两倍的数组(使用realloc)
  3. 如果现在有足够的内存,请附加字符,否则转到第2点.

我只是想知道这是否足够有效.例如,我可以想到像树结构这样的东西,我将数组保存在树的节点中,这样,而不是在追加东西之前将旧元素复制到新数组,我只是将新的malloc'ed元素添加到下一个树的节点并在那里附加字符.这样我就可以避免不必要的复制......

所以这只是以不同方式调整大小的一种方式.我应该寻找其他的东西,还是我只是将旧元素复制到新数组的两倍大小的解决方案?

c arrays data-structures

3
推荐指数
1
解决办法
425
查看次数

在C++中实现深度优先搜索

我正在学习数据结构和抽象数据类型,并且我一直陷入一个不断涌现的问题.

我不明白计算机科学现在已有50年历史了(或更老,我不确切知道)以及数据结构,ADT和算法如何成为这一切的基础部分,但仍然没有标准任何一个.

我的问题实际上非常具体:我正在尝试在C++中实现深度优先搜索,其方式可以适用于任何本机(内置)数据类型.我的问题是,我先在哪里看?我知道STL的堆栈类可以用来实现DFS算法,但STL是第一个看的地方吗?我应该从头开始实现DFS,使用堆栈以及我对实现此算法的了解吗?或者,当专业程序员需要进行这种搜索时,他们会找到一个库?

请注意,这个问题并不像我希望的那样具体.

c++ depth-first-search

2
推荐指数
2
解决办法
1万
查看次数