【问题标题】:QMap but without sorting by keyQMap,但没有按键排序
【发布时间】:2013-04-19 09:55:31
【问题描述】:

我需要像 QMap 这样的结构,但没有对键进行排序,所以如果我先在其中插入项目,我可以计算出该项目将在所有其他项目之前。并在指定元素之前或之后插入对。 Qt有这样的吗?

【问题讨论】:

  • @jrok 不,我需要存储对、键和值
  • 那么,使用QPair。但是在您编辑之后,我发现您不能使用队列 - 您不能在队列中随机插入。

标签: c++ qt data-structures qmap


【解决方案1】:

QMap 被实现为树,这意味着插入顺序很重要。您似乎正在寻找一个队列。但是,如果您需要一个可以按插入顺序迭代并同时通过特定键访问的容器,那么 Qt 没有适合您的结构。

这些可以帮助你:

【讨论】:

    【解决方案2】:

    我用了一个

    QList<QPair<key,value>> 
    

    实现这一目标。但是查找会消耗更多时间,因为您需要遍历 QList 并使用 QPair.first 来查找您想要的项目。

    编辑:如果你不需要它与其他API交互很多,你可以使用QVector代替QList,根据Qt官方更快

    【讨论】:

    • 例如,我想存储一个按我插入方式排序的学生数学成绩列表。首先,我会为每个学生构造一个 QPair,然后将它们插入到 QList 中。当我需要它的“队列”能力时,我可以使用for循环并循环遍历QList,当我需要“哈希”能力时,我将遍历QList并查看QPair.first => student_name,如果匹配,返回 QPair.second=>score
    • 这不提供功能,例如当然,通过键插入/查找,但它确实允许按特定顺序保存 k/v 对。
    猜你喜欢
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 2018-03-27
    相关资源
    最近更新 更多