首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在QSet<QString>中插入元素并检索、删除QSet的最后一项

在QSet<QString>中插入元素并检索、删除QSet的最后一项
EN

Stack Overflow用户
提问于 2018-05-04 21:52:04
回答 2查看 1K关注 0票数 0

我有以下数据集:

代码语言:javascript
复制
 QSet<QString> set;

我尝试在QSet中插入3个元素。

代码语言:javascript
复制
set.insert("A");
set.insert("B");
set.insert("C");

添加上述三个元素后,它显示我的QSet的大小为3,但总共有16个元素可见,其中13个元素显示为空。每次我尝试调试的时候,元素"A“会出现在列表的顶部,下一次,"C”会出现在列表的顶部。

因此,我无法检索QSet. I want to retrieve the element,which is inserted at the last to theQSet的最后一个元素。

我使用以下几行代码来检索和删除QSet中的元素。

代码语言:javascript
复制
QString str1 = QString( *( set.end() - 1 ) ); //to get the last element

set.remove( *( set.end() - 1 ) ); //to remove the last element

我认为,它必须正确初始化我的QSet,但我仍然不能准确地解决问题

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

EN

回答 2

Stack Overflow用户

发布于 2018-05-04 22:20:19

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

插入的顺序不会记录在任何地方。如果要保持插入顺序,则需要SequenceContainer,如std::vectorQVector

票数 1
EN

Stack Overflow用户

发布于 2018-05-04 22:04:03

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50176576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档