我想要一个QList,其中元素在删除时仍处于其位置。 所以它就像一个带孔或列表的List。那样的。
答案 0 :(得分:5)
使用QMap<int, your_type>
。
答案 1 :(得分:2)
有不同的语义可供选择:
QMap<int, T>
:&#34; Holes&#34;根本不存在。访问某个孔会导致默认值/不存在。QVector<T>
:孔存在为null或default构造的值。这需要来自T
的空语义。这适用于许多Qt类型,例如QString
,QDateTime
,它们都具有空值的概念(=&gt; isNull()
)。QVector<T*>
:洞是nullptr
个。如果你有一个纯粹的&#34;指针类型&#34;,这可以很好地工作,例如QObject
- 派生T
。QHash<int, T>
:基本上与选项1)相同,但请注意:QHash
遍历散列顺序中的项目,这是完全随机的,而QMap
遍历索引中的项目 - 由&lt; -Relation定义的键类型(int
)!答案 2 :(得分:0)
如果你想list with holes
为什么不考虑QVector
对象指针(QVector<MyCustomType*> myListWithHoles;
)?...假设hole
你的意思是一个对象内存被释放QVector
指针保留每个项目的位置,即使你销毁其中一些项目,你仍然可以访问每个项目的内存。