verschachtelte Q(Multi)Map durchsuchen

Alles rund um die Programmierung mit Qt
Antworten
Fenriswolf
Beiträge: 27
Registriert: 11. November 2014 18:06

verschachtelte Q(Multi)Map durchsuchen

Beitrag von Fenriswolf »

N Abend Forum,
ich steh mal wieder aufm Schlauch:
in der Ausgangssituation hab ich viele Strings, die jeweils an den Punkten zerlegt werden
Beispiel:

Code: Alles auswählen

20.0.M123
20.1.1234
20.0.M4
(...)
aufbau der verschachtelung:

Code: Alles auswählen

QMultiMap<short, QMultiMap<short, QMap<QString, QMap<QString, QString>>>> Menus;
die frage ist nun: wie komme ich an den key (z.b. "M123") der letzten Map?

alternativ: könnt ihr mir eine andere gute aufbawahrungsvariante nennen?
größenordnung liegt zwischen (grob geschätzt) 100 - 10.000, je nach dem wieviel ausgelesen wird (ist vorher nicht absehbar)

Vielen Dank euch im Voraus und noch einen schönen Abend
Ich bin die Summer meiner Erfahrungen; und heute bin ich mehr, als ich gestern war
odt
Beiträge: 128
Registriert: 12. August 2010 11:49
Kontaktdaten:

Re: verschachtelte Q(Multi)Map durchsuchen

Beitrag von odt »

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.

Code: Alles auswählen

QStringList menues;
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

Code: Alles auswählen

class Gruppe {
   QString nr;
   QList<Gruppe*> kinder;  
}
Die Kinder können auch durch ein QHash<QString,Gruppe*> optimiert werden, wobei Key == kind.nr.

Viele Möglichkeiten und viele Grüsse
Reto
ODT Informatik GmbH, Reto Tschofenig
Fenriswolf
Beiträge: 27
Registriert: 11. November 2014 18:06

Re: verschachtelte Q(Multi)Map durchsuchen

Beitrag von Fenriswolf »

n abend odt,
danke für den tipp, auch wenn mir im nachhinein aufgefallen ist, dass ich ne sache vergessen hab...

das mit den klassen werde ich mal ausprobieren, denke das ist hierbei die ziehlführenste idee
Ich bin die Summer meiner Erfahrungen; und heute bin ich mehr, als ich gestern war
Antworten