Hallo Fenris
Mit vierfach-verschachtelten Map's bin ich überfordert. Schon nur das Einfügen der Beispieleinträge in die Map's ist mir zu kompliziert. Ist nun der erste Key 20 einmal oder mehrmal in der obersten Ebene? Wenn einmal, warum dann ein MultiMap? Wenn mehrmals, sind die folgenden Maps mit nur je einem Eintrag gefüllt?
> wie komme ich an den Key?
An den Key wirst Du vermutlich nur über Iterieren kommen.
> Alternative?
Meine Erfahrung ist, dass schon doppelt geschachtelte Map's zu kompliziert werden, zumindest wenn alles in einen Typ gemixt wird.
Ich nehme an, dass Du die Map's aufgrund Performance-Überlegungen einsetzen willst.
Bei 10'000 Einträgen vermutlich ein Overkill. Selbst für 100'000 Einträge könnte eine QStringList reichen.
Grundsätzlich würde ich die Daten zuerst mal logisch strukturieren. Da ich Deine Problem-Domäne nicht kenne, tippe ich auf ein
Code: Alles auswählen
class Auslese {
QString a;
QString b;
QString c;
}
QList<Auslese*> ausgelesen;
Optimierungsmöglichkeit: statt QList ein QHash<QString,Auslese*>, wobei key == auslese.a.
oder wenn die 3 Ebenen "logisch" sind.
Code: Alles auswählen
class Obermenu {
QString id;
QHash<QString,Mittelmenu*> mittelmenues; // key == mittelmenu->id
}
class Mittelmenu {
QString id;
Mittelmenu* obermenu; // zum hochnavigieren
QHash<QString,Untermenu*> untermenues; // key == untermenu->id
}
class Untermenu {
QString id;
Mittelmenu* mittelmenu; // hochnavigieren
}
Wenn es hierarchisch ist
Die Kinder können auch durch ein QHash<QString,Gruppe*> optimiert werden, wobei Key == kind.nr.
Viele Möglichkeiten und viele Grüsse
Reto