如何从 QMultiMap 中的值中获取键?

Posted

技术标签:

【中文标题】如何从 QMultiMap 中的值中获取键?【英文标题】:How to get key from value in QMultiMap? 【发布时间】:2019-11-06 12:48:20 【问题描述】:

我的 QMultiMap 如下:

QMultiMap <int, QString> paramIDMap, paramValueMap;

我的价值是“xyz”,我想把它作为关键。

例如:paramIDMap.getkey("xyz") 像这样

如何做到这一点?

预期的输出应该返回键。

【问题讨论】:

哪个键? ____ 你不能。这不是地图的用途。关联容器不能以这种方式工作。可能有多个具有相同值的键。您唯一的选择是遍历地图中的所有键,并检查每个键的值,然后从那里找出要做什么。但是,如果您需要在映射中找到值的键,则意味着您使用了错误的容器。您不应该使用地图,而应该使用其他东西。你必须自己弄清楚你可以使用哪个容器来做你需要做的任何事情。 @LogicStuff 它是 hashmap,所以我们从它的值中检索 hashmap 键。以同样的方式这个 qmultimap 工作。所以我插入了类似 paramIDMap.insert(key,value); 的记录 @SamVarshavchik 好的,知道了 【参考方案1】:

QMultiMap 旨在存储键值对,以便在键可以有多个值的情况下通过键快速查找。 从 QMap 继承的 QList QMap::keys(const T &value) const 方法将返回特定值的键的 QList。这不会是快速查找,时间复杂度将是线性的。

QMultiMap <int, QString> paramIDMap;
paramIDMap.insert(1,"a");
paramIDMap.insert(1,"b");
paramIDMap.insert(2,"a");
paramIDMap.insert(2,"b");
QList<int> ks = paramIDMap.keys("a");

其中ks 将包含 [1,2]。

【讨论】:

@cmhacker,只是另一个注意事项:每个类的 Qt 文档,如果该类是子类,则不会显示继承的方法和属性。您可以通过单击始终位于第一个表格下方的List of all members, including inherited members 链接找到它们。这似乎是你没有找到这个方法的原因。

以上是关于如何从 QMultiMap 中的值中获取键?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中搜索数组中的多个值?

有没有办法在 JSON 文件的值中获取键名

如何在 Python 中直接获取字典键作为变量(而不是通过从值中搜索)?

如何从几个相同的值中获取一个值?

从组合框的值中获取选项的文本[重复]

ClearML 从记录的值中获取最大值