将指针与其他数据相关联

时间:2017-05-20 23:11:26

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

嗨,所以我不完全确定如何说出这个主题。

我正在为我的数据结构课程实现图表。图形需要能够找到两个顶点之间的最短路径。图表作为顶点和边缘是演员在一起的电影。

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

就像Matt Damon与Ben Affleck的电影Good Will Hunting(1997)一样。

我的MatN Damon的actorNode会在其中指向Ben Affleck的“链接向量”中有一个ActorNode指针。是否有一种简单的方法将“Good Will Hunting(1997)”以某种方式与两个ActorNodes之间的链接相关联?

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

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

希望这两种方法中的一种符合您的需求。