我有以下数据集:
QSet<QString> set;
我试图在QSet中插入3个元素。
set.insert("A");
set.insert("B");
set.insert("C");
添加上述三个元素后,将QSet
的大小显示为3,但共有16个元素可见,其中13个元素显示为空。
每一次,我都试着调试这个元素&#34; A&#34;一次又一次位于列表的顶部,&#34; C&#34;出现在列表的顶部。
由于这个原因,我无法检索QSet. I want to retrieve the element,which is inserted at the last to the
QSet的最后一个元素。
我使用以下代码行来检索和删除QSet
中的元素。
QString str1 = QString( *( set.end() - 1 ) ); //to get the last element
set.remove( *( set.end() - 1 ) ); //to remove the last element
我认为,它必须通过正确初始化我的QSet
来做一些事情,但我仍然无法准确地找出问题
如果有人能更好地解释我,我会很高兴的 提前谢谢!
答案 0 :(得分:0)
QSet基于哈希表,因此无序。如果您需要按键排序,请使用QMap。
答案 1 :(得分:0)
QSet
不会以任何特定顺序存储它的元素。正如您所注意到的,没有特定的顺序在您的程序运行之间甚至不稳定。在一个非常真实的意义上,不是 a&#34;最后一个元素&#34;,这就是为什么没有front
或back
成员
不会在任何地方记录插入顺序。如果您想维护广告订单,则需要SequenceContainer,例如std::vector
或QVector
。