搜索3级结构(双向)

时间:2012-08-08 12:21:12

标签: c++ algorithm

[注意]我尝试编辑你的问题。如果这是正确的,请接受。原来的问题非常暧昧。

我有一些任务要做。用户可以输入函数的名称,也可以输入类和文件的名称。我必须根据检查列表对此函数名执行一些检查。但是,问题是检查列表中的检查是针对文件而不是函数描述的。即,它描述了对每个文件中出现的所有类和函数的检查。因此,当用户输入函数名称时,我需要将其映射到正确的文件并找出正确的检查。

你能否建议一些有效的方法来做到这一点?

编辑:(尽我所能,抱歉我的英语不是最好的;)

假设我们有一个应用程序(脚本?),我们想要分析它(是的!我们正在创建类似于探测器的东西!:D)但我们不想检查所有内容,只需要很少的功能。但是有问题。我们的探查器的用户希望以一种有点奇怪的方式给出要分析的功能列表。

所以,他可以给我们: - 函数名称 - 我们需要分析具有该名称的每个函数(或方法),无论它在哪里(可以在每个文件或每个类或类似标准库的东西中(在这种情况下我们没有文件名) ))。 - 类的名称 - 我们需要分析这个类中的每个函数/方法,但类本身可以在几个文件中的任何位置(我们可以使用相同名称的不同类) - 文件名 - 我们需要对此文件中的所有内容进行概要分析,但可能只有少量文件具有相同的名称(因此在每个文件中我们都需要对每个函数/方法进行概要分析)。

以上所有的混合,所以如果我们有类(让我们称之为“Bar”)和函数(“foo”)我们需要在类“Bar”中分析这个函数“foo”,但仍然可以是类在任何文件中(少数文件中可能只有很少的“Bar”类。如果我们有文件名和函数名,我们需要在文件中分析每个具有该名称的函数(无论它是在任何类的内部还是外部)(但仍然可以有很少的同名文件。)

很少有文件或几个类不是真正的问题,因为我已经在profiler中替换了执行函数(是的,分析器本身正在工作)但是问题是如何存储函数(以及类和文件)的名称以便它可以尽可能快(内存并不重要,如果它快)搜索函数应该是profile(简而言之:执行函数请问它应该配置这个函数或者没有我们需要给出答案,在执行函数中我们有函数名(肯定),类名(如果函数是类中的方法)和文件名(如果函数不是来自标准库)。

2 个答案:

答案 0 :(得分:0)

您可以生成一个xml文件来存储您的清单信息。 as:

<file name="file1"...>
    <class name="class1" ...>
        <func name=" func1" ... />
    </class>
</file>

运行程序时,将xml读入内存,每个层次结构构建一个对象,高层次结构对象包含下层对象。 并构建三个映射列表,第一个“字符串”是文件或类或func的名称,第二个“对象*”是指由xml构建的对象。

获取信息后,您可以使用map :: find进行搜索。如果找到'object1',则可以执行'object1'及其包含对象中定义的方法。

答案 1 :(得分:0)

您可以浏览所有文件 - &gt; classes-&gt;函数并创建一个地图(哈希图),其中函数名称作为键,类和文件信息作为值。

用户输入功能名称 - &gt;您可以通过搜索地图立即获取文件/班级名称 - &gt;您寻找文件名的规则列表并应用规则。