首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >允许重复密钥并保留其插入顺序的QMap esque容器

允许重复密钥并保留其插入顺序的QMap esque容器
EN

Stack Overflow用户
提问于 2020-11-26 14:57:12
回答 1查看 412关注 0票数 1

我有一个具有动态创建的自定义小部件的UI。每个自定义小部件都有两个QLineEdits,必须从其中解析用户输入。

必须在我的应用程序中读取和处理来自这些自定义小部件中每一个通过其2 QLineEdits的信息。每个CustomWidget在确定的时间内指导机器的一个特定操作,因此我试图为我的机器获得一个“待办事项列表”,如下所示:

代码语言:javascript
复制
MachineActionA : {param1, param2}
MachineActionD : {param1, param2}
MachineActionC : {param1, param2}
MachineActionA : {param1, param2}
MachineActionD : {param1, param2}

其中param1和param 2是从QLineEdits读取的。

我认为这需要的是

代码语言:javascript
复制
QMap<QString, QPair<QString, QString>> map;

但很快就提醒我们,这不允许在保留前一个值的同时插入多个(相同的键)。在上面的示例中,第一个"MachineActionA“的值被插入在操作"C”和"D“之间的值覆盖,因此我尝试了一种QMultiMap方法:

代码语言:javascript
复制
QMultiMap<QString, QPair<QString, QString>> multi_map;

这修复了键覆盖问题,但不保留插入键的顺序。

我确信,这可以通过对容器进行相当微小的更改来解决,而不需要定制数据结构/迭代器实现或附加的索引向量/列表(我在这里看到过)。

目前,这个相当麻烦的修复方法适用于我。

代码语言:javascript
复制
QVector<QPair<QString, QPair<QString, QString>>> complicated_pair_vector

但它不漂亮。

,我是否可以创建一个映射式容器类型来保持添加的元素的顺序,同时允许重复的键?

编辑:编写了两次QMap,忘记向向量中添加第二个QPair

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-04 19:03:58

您的目标是拥有比O(N)更快的查找和插入时间吗?如果没有,那么您的QVector解决方案似乎工作得很好,也许只需将其作为您自己容器类的私有实现细节,为您的其余代码创建一个相当公共的API来调用它,然后使用它。

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

https://stackoverflow.com/questions/65024442

复制
相关文章

相似问题

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