Scavenger
17-05-2004, 16:23
Hallo !
Ich schreibe gerade an einen Programm in dem ich die Vererbungshirarchie meiner
Klassen mit Hilfe eines Types kennzeichne:
UINT_32 TYPE = 0x 00 0000 00;
Dieser Type ist dreigeteilt (Kategorie, Unterkategorie, Implementierung).
Alle Objekte werden in einer std::multimap<UINT_32, SimObject*> gespeichert.
Ich möchte nun bestimmte Objektgruppen aus dieser Liste heraussuchen und
bearbeiten.
Dabei möchte ich
nur die Kategorie, also z.B. 0x01 0000 00
Kategorie und Unterkategorie, also z.b. 0x25 0001 00
oder die komplette Implementierung, also z.b. 0x 25 1234 56
angeben können. (Ähnlich einer Subnet Mask bei IP)
In multimap werden alle Werte in absteigender Reihenfolge gespeichert (wenn ich std:less<UINT_32> als comparator angebe.
Wie kann ich aber möglichst einfach den Anfang bzw. Ende der gültigen Objekte finden ?
Hier ein Beispiel:
Inhalt der multimap:
0x01000000
0x02002000
0x02234324
0x02234324
0x03000000
Maske:
0x02000000
Gruß,
Scav
Ich schreibe gerade an einen Programm in dem ich die Vererbungshirarchie meiner
Klassen mit Hilfe eines Types kennzeichne:
UINT_32 TYPE = 0x 00 0000 00;
Dieser Type ist dreigeteilt (Kategorie, Unterkategorie, Implementierung).
Alle Objekte werden in einer std::multimap<UINT_32, SimObject*> gespeichert.
Ich möchte nun bestimmte Objektgruppen aus dieser Liste heraussuchen und
bearbeiten.
Dabei möchte ich
nur die Kategorie, also z.B. 0x01 0000 00
Kategorie und Unterkategorie, also z.b. 0x25 0001 00
oder die komplette Implementierung, also z.b. 0x 25 1234 56
angeben können. (Ähnlich einer Subnet Mask bei IP)
In multimap werden alle Werte in absteigender Reihenfolge gespeichert (wenn ich std:less<UINT_32> als comparator angebe.
Wie kann ich aber möglichst einfach den Anfang bzw. Ende der gültigen Objekte finden ?
Hier ein Beispiel:
Inhalt der multimap:
0x01000000
0x02002000
0x02234324
0x02234324
0x03000000
Maske:
0x02000000
Gruß,
Scav