【问题标题】:associating a pointer with other data将指针与其他数据相关联
【发布时间】:2017-10-20 20:36:02
【问题描述】:

你好,所以我不完全确定如何用词来表达这个话题。

我正在为我的数据结构课程实施图表。图需要能够找到两个顶点之间的最短路径。该图以演员为顶点,边是演员一起参与的电影。

我希望我的数据结构更快,所以我想我可以有一个 actorNode 类来存储该特定演员的名称以及一个 actorNode 指针向量。该向量中的每个指针都代表这两个演员在一起的电影。我对这个实现想法的问题是有没有办法将所有电影信息与两个演员之间的特定链接相关联?我需要存储电影名称和年份。

就像马特·达蒙与本·阿弗莱克的电影《善意狩猎》(1997 年)有关。

我为 Matt Damon 设置的 actorNode 将在指向 Ben Affleck 的“链接向量”中包含一个 ActorNode 指针。有没有一种简单的方法可以将“Good Will Hunting (1997)”与两个 ActorNode 之间的联系联系起来?

谢谢!

【问题讨论】:

  • 不是只有一个指针向量,没有。你需要改变你的模型。

标签: c++ performance pointers graph shortest-path


【解决方案1】:

您不能将附加信息附加到指针值。 我看到两种方法可以解决您的问题:

方法 1 类似于数据库设计,为此类关系引入一个单独的类,例如像class actorsPlayingTogether { Actor *a1; Actor *a2; Movie *m; } 这样的类。

方法 2 是在演员班级中引入一个地图,该地图为他的每个合作演员关联各自的电影。所以班级演员可能是class Actor { std::map<Actor &,Movie &> coactors; ...}。因此,您可以获得两者 - 用于快速遍历的相关演员以及相应的电影。缺点是冗余存储信息,因为actor和co-actor都需要相互引用,双方要保持一致。

希望这两种方法中的一种能满足您的需求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 2020-01-25
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多