如何创建具有修复索引的QList
How to create a QList with fix indices
我想要一个QList,其中元素在删除时仍在其位置。所以它就像一个有洞的列表或诸如此类的东西。
使用QMap<int, your_type>
。
有不同的选项,具有不同的语义:
QMap<int, T>
:"洞"根本不存在。访问孔会导致默认值/不存在QVector<T>
:孔作为空值或默认构造值存在。这需要来自T
的null语义。这适用于许多Qt类型,如QString
、QDateTime
,它们都有空值的概念(=>isNull()
)QVector<T*>
:孔是nullptr
s。如果你有一个纯粹的"指针类型",例如QObject
派生的T
,这会非常有效QHash<int, T>
:基本上与选项1相同),但要注意:QHash
按哈希顺序遍历项目,这是完全随机的,而QMap
按<-密钥类型上的关系(int
)
如果您想要一个list with holes
,为什么不考虑对象指针的QVector
(QVector<MyCustomType*> myListWithHoles;
)?。。。假设hole
是指内存被释放的对象,则指针的QVector
会保留每个项目的位置,即使您销毁了其中的一些,并且您仍然可以访问每个项目的内存。
相关文章:
- 数组索引的值没有增加
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 查找最接近的大于当前数字的数字的索引
- 在C++中调整向量中的索引
- 重载元组索引运算符-C++
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 为std::string的某个索引赋值
- 并行用于C++17中数组索引范围内的循环
- 跟随整数索引列表的自定义类迭代器
- 如何检查QList中是否存在值
- 如何在for循环中包含两个索引值的测试条件
- D3D11-将混合权重和索引传递到顶点着色器
- 将转换字符键入 int 以用作向量C++的索引
- QList::at 中的 Qt 断言失败<T>:"索引超出范围
- 如何创建具有修复索引的QList
- QList::at 中的 qt 断言失败<T>:"索引超出范围"
- QVector, QList等为什么索引是int而不是size_t
- 为什么 QList::at() 不检查索引是否存在并返回只读值?
- 获取QList对象的ListView索引
- 将QList迭代器转换为索引