【问题标题】:C++ about multisets and arraysC++ 关于多集和数组
【发布时间】:2016-07-06 16:58:42
【问题描述】:

我很不高兴背负着一本写得不好的教科书。就目前而言,我从享受 C++ 到只是想着它就身体不适。但是,我拒绝退出课程。所以总而言之,我有一个实验室会问以下问题:

编写一个包含两个数组的程序,称为actors和roles,每个数组大小为N。对于每个i,actors[i]是一个actor的名字,roles[i]是一个包含多个字符串的集合演员出现的电影。程序以您设计的格式从文件中读取这些数组的初始信息。一旦程序运行,用户可以输入演员的名字并接收该演员的所有电影的列表。或者用户可以输入电影的名称并接收该电影中所有演员的列表。

现在,我不想要答案。我只需要知道从哪个方向开始前进。我对标准数组感觉很舒服,但是这本教科书中描述多重集的方式让我感到困惑。任何帮助(不只是给我答案)将不胜感激。

【问题讨论】:

  • 在数据库理论中,如果有帮助的话,我会称之为多对多映射。
  • find 方法会找到特定的成员,count 方法会计算具有特定键的元素。
  • 多重集(至少在 C++ 标准库中,但我认为在正常使用中)是一个可以包含重复元素的集合。 C++(多)集合不是真正的数学集合,因为它们是有序的;从 C++11 开始,标准库还包含 unordered_sets 和 unordered_multisets。多重集的想法可能看起来很奇怪,但记住 C++(多重)集可以使用任意函数来比较定义等价关系的对象是有用的。我仍然不明白为什么roles[i] 会是一个多集而不是一个集(一个演员可以在同一部电影中出现两次吗?)

标签: c++ arrays multiset


【解决方案1】:

这样做的方法是让第三个辅助多集将演员与电影联系起来。

这第三组只需要包含成对的唯一整数。假设用户选择演员'韦恩'第一步是形成整数对的辅助子集(actor_id,movie_id),每个演员都有一个唯一的整数id,每部电影都有一个唯一的整数id,然后遍历这个集合以获得所有电影这些键的值。

换一种方式:如果用户再次选择电影“生皮”,则形成整数子集并遍历它以找到所有演员作为这些键的值。

查找“多对多关系”以获取更多信息。

【讨论】:

猜你喜欢
  • 2012-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多