如何使用修复索引创建QList

时间:2014-10-07 11:16:07

标签: c++ qt list

我想要一个QList,其中元素在删除时仍处于其位置。 所以它就像一个带孔或列表的List。那样的。

3 个答案:

答案 0 :(得分:5)

使用QMap<int, your_type>

答案 1 :(得分:2)

有不同的语义可供选择:

  1. QMap<int, T>:&#34; Holes&#34;根本不存在。访问某个孔会导致默认值/不存在。
  2. QVector<T>:孔存在为null或default构造的值。这需要来自T的空语义。这适用于许多Qt类型,例如QStringQDateTime,它们都具有空值的概念(=&gt; isNull())。
  3. QVector<T*>:洞是nullptr个。如果你有一个纯粹的&#34;指针类型&#34;,这可以很好地工作,例如QObject - 派生T
  4. QHash<int, T>:基本上与选项1)相同,但请注意:QHash遍历散列顺序中的项目,这是完全随机的,而QMap遍历索引中的项目 - 由&lt; -Relation定义的键类型(int)!

答案 2 :(得分:0)

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