I haben eine Struktur, die 3 Felder, zwei int
s (nennen wir sie A und B ) und eine bool
(C).Triple-Karte einschließlich 2 Schlüssel
Ich möchte eine Art von Array dieser Struktur erstellen und in der Lage sein, über einen der Schlüssel (A oder B) darauf zuzugreifen, um das Lochobjekt (mit A, B und C) zurückzugeben. Ich werde nicht so etwas wie "das ganze Objekt, für das der Bool wahr ist" bekommen, wenn das einen Unterschied macht.
Offensichtlich sind beide Schlüssel einzigartig und das Bool kann nicht sein, aber ich dachte, ich würde es aus Gründen der Klarheit erwähnen.
Wenn es kein A oder B gab, wäre es ein einfaches std::map<int, bool>
.
Die einzige Lösung, die ich derzeit sehe, ist ein Wrapper mit 2 set
s und einem vector
. Gibt es eine Möglichkeit, mein Leben einfacher zu machen?
Hinweis: Es enthält höchstens hundert Tupel, daher sollte die Leistung kein Problem sein. Linearer Zugriff ist akzeptabel.
Um es noch deutlicher, hier zu machen ist, was ich zu tun in der Lage sein möchte:
foobar<int, int, bool> array; // or something along those lines
array.add(1, 101, true);
array.add(2, 102, false);
array.getA(1); // returns first object
array.getA(2); // returns second object
array.getB(102); // returns second object again
Wenn dies Ihre reale Anforderung (int, int, bool) und kein Kürzel Beispiel ist, würde ich es nur mit zwei Karten ('map'), eins für A und eins für B tun. –
Es ist ein schnitt beispiel, aber am wichtigsten wäre diese lösung ne einen Wrapper sowieso, um die 2 'bool's synchron zu halten. – 1ace