整数集之间的映射

时间:2011-09-04 08:29:29

标签: c++ algorithm qt

我需要将一组整数映射到整数集。

首先,我想指出并非所有可能的整数集都被考虑在内。 相反,我创建应用程序将(曾经)使用的相关集合 - 以编程方式,仅使用一次,并在二进制文件中将其序列化。

接下来,我构建一个QMap<QSet<int>, QSet<int> > setMap

稍后,应用程序构造另一组整数(通过用户输入),将其称为userSet并快速获取setMap[userSet]

现在问题是,QMap需要为关键字类型定义operator <,显然QSet<int>没有。{/ p>

我该怎么办?

4 个答案:

答案 0 :(得分:1)

您需要提供自己的重载&lt;运营商。您可以参考QMap documentation中的Employee类示例。在您的情况下,您需要提供如下函数:

 bool operator<(const QSet<int> &first, const QSet<int> &second)
 {
    // your logic to compare the two sets
 }

答案 1 :(得分:1)

您始终可以将地图的密钥设为QString。订购集合中的数字,以某种方式打印它们(使用任意分隔符),并且开心。

答案 2 :(得分:1)

如果这些集是静态的,请将它们加载到表(QVector<QSet<int> >)中,并使用该表中集的索引作为映射中的键和值(QMap<int,int>)而不是集合自己。

答案 3 :(得分:0)

我将这些集转换为有序列表并映射它们(然后转换回集合)。为有序列表定义比较运算符比为集合更容易。当然,这对你来说可能太慢了。

您也可以使用哈希映射。