如何从 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 中的值中获取键?的主要内容,如果未能解决你的问题,请参考以下文章