在QSet <qstring>中插入元素并检索,删除QSet的最后一项

时间:2018-05-04 13:52:04

标签: c++ qt data-structures

我有以下数据集:

 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来做一些事情,但我仍然无法准确地找出问题

如果有人能更好地解释我,我会很高兴的 提前谢谢!

2 个答案:

答案 0 :(得分:0)

QSet基于哈希表,因此无序。如果您需要按键排序,请使用QMap。

答案 1 :(得分:0)

QSet不会以任何特定顺序存储它的元素。正如您所注意到的,没有特定的顺序在您的程序运行之间甚至不稳定。在一个非常真实的意义上,不是 a&#34;最后一个元素&#34;,这就是为什么没有frontback成员

不会在任何地方记录插入顺序。如果您想维护广告订单,则需要SequenceContainer,例如std::vectorQVector