我想存储QPair和QString,换句话说我想为每个索引存储三个值(int,int,String)。为此目的我选择了一个QMap,结果没问题,QString用作键,QPair用作值。
到目前为止,我只迭代了QMap,但是当我想查找其中一个键(QString)时出现问题。当我使用myQMap.key(myQPair)
时,返回的字符串是空白的(我知道我想要的字符串不是空白的)。
所以问题是如何通过使用QPair作为参数来查找QString? QPair能否成为关键?据我所知,这不会奏效。
答案 0 :(得分:2)
听起来你想要一个像数据结构这样的地图可以双向工作;您想使用QPair<int,int>
作为关键字查找QString
,并希望使用QString
作为关键字查找QPair<int,int>
。
Qt中没有提供此功能的类。因此,您必须自己实施(有很多方法),或者您可以使用boost::bimap
答案 1 :(得分:1)
没有std::map
之类的对象可以将该值用作键,这会破坏它的用途。
您需要的是boost::bimap
(docs)。
答案 2 :(得分:0)
我通过创建两个地图解决了这个问题。