使用 QPair 和 QString 选择正确的数据结构

Choosing the right datastructure with QPair and QString

本文关键字:数据结构 选择 QPair QString 使用      更新时间:2023-10-16

我想存储一个QPair和QString,或者换句话说,我想为每个索引存储三个值(int,int,String)。为此,我选择了一个QMap,效果很好,其中QString作为键,QPair作为值。

到目前为止,我只遍历了 QMap,但是当我想查找其中一个键 (QString) 时会出现问题。当我使用 myQMap.key(myQPair) 返回的字符串为空时(我知道我想要的字符串不是空的)。

所以问题是我如何仅使用 QPair 作为参数来查找 QString?QPair可以作为关键吗?据我所知,这是行不通的。

听起来你想要一个双向工作的数据结构;你想用QString作为键来查找QPair<int,int>,你想用QPair<int,int>作为键来查找QString

Qt中没有提供此功能的类。所以要么你必须自己实现它(有很多方法),要么你可以使用 boost::bimap

没有像对象这样的std::map可以使用值作为键,这违背了它的目的。

您需要的是boost::bimap(文档)。

我通过创建两个地图解决了这个问题。