【问题标题】:How to create a QList with fix indices如何创建具有修复索引的 QList
【发布时间】:2014-12-01 19:19:57
【问题描述】:

我想要一个 QList,其中元素在删除一个时仍然在它们的位置。 所以它就像一个有洞或某事的列表。像这样。

【问题讨论】:

  • QLinkedList 甚至没有随机访问或索引。

标签: c++ qt list


【解决方案1】:

有不同语义的不同选项可用:

  1. QMap<int, T>:“洞”根本不存在。访问孔会导致默认值/不存在。
  2. QVector<T>:空洞作为空值或默认构造值存在。这需要来自T 的空语义。这适用于许多 Qt 类型,如 QStringQDateTime,它们都有空值的概念 (=> isNull())。
  3. QVector<T*>:孔是nullptrs。如果你有一个纯“指针类型”,这非常有效,例如QObject-派生T
  4. QHash<int, T>:与选项 1) 的想法基本相同,但要小心:QHash 以完全随机的哈希顺序遍历项目,而 QMap 以由 int)!

【讨论】:

    【解决方案2】:

    如果你想要一个list with holes 为什么不考虑QVector 指向你的对象的指针(QVector<MyCustomType*> myListWithHoles;)?...假设hole 你的意思是一个内存被释放的对象QVector指针会保留每个项目的位置,即使您销毁其中的一些并且您仍然可以访问每个项目的内存。

    【讨论】:

      【解决方案3】:

      使用QMap<int, your_type>

      【讨论】:

      • QHash<int, you_type> 也是一个选项。
      • QHash 以随机的哈希顺序遍历。如果他关心索引,他很可能想要索引顺序。
      猜你喜欢
      • 2019-11-04
      • 1970-01-01
      • 1970-01-01
      • 2019-09-17
      • 2021-11-30
      • 2018-12-15
      • 1970-01-01
      • 2019-06-03
      • 2012-03-13
      相关资源
      最近更新 更多