2014-10-07 4 views

답변

5

QMap<int, your_type>을 사용하십시오. 당신이 list with holes가 왜 객체에 대한 포인터의 QVector (QVector<MyCustomType*> myListWithHoles;)를 고려하지하려면

+0

'QHash '도 옵션입니다. – Googie

+2

'QHash'는 무작위 인 해시 순서로 이동합니다. 그가 색인을 염려한다면, 그는 색인 주문을 원할 것입니다. – dom0

0

? ... hole하여 메모리 포인터의 QVector 출시 된 객체를 의미한다고 가정에도 불구하고 각 항목의 위치를 ​​유지 당신은 그들 중 일부를 파괴하고 당신은 여전히 ​​각 항목의 메모리에 액세스 할 수 있습니다.

2

는 다른 의미를 가진 다른 옵션을 사용할 수 있습니다

  1. QMap<int, T> : "구멍"전혀 존재하지 않는다. 구멍에 액세스하면 기본값/존재하지 않습니다.
  2. QVector<T> : 홀은 null 또는 default-constructed 값으로 존재합니다. 이를 위해서는 T의 null-semantics가 필요합니다. 이것은 QString, QDateTime과 같은 많은 Qt 유형에서 잘 작동하며, 모두 null 값 (=>isNull())이라는 개념을 가지고 있습니다.
  3. QVector<T*> : 구멍은 nullptr입니다. 순수한 "포인터 유형"이있는 경우 매우 효과적입니다. QObject -derived T.
  4. QHash<int, T> : 같은 기본적으로 같은 생각 옵션 1), 그러나 조심 : QHash가 completly 랜덤 해시 순서에서 항목을 통과, QMap 키 유형에 < -Relation에 의해 정의 된 인덱스 순서로 항목을 통과하면서 (int)!
관련 문제