I mają strukturę zawierającą 3 pola, dwa int
s (nazwijmy ich i B) i bool
(C).potrójny mapę łącznie 2 klucze
Chcę utworzyć rodzaj tablicy tej struktury i mieć do niej dostęp za pomocą dowolnego klawisza (A lub B), otrzymując w zamian obiekt z dziurą (z A, B i C). Nie będę musiał robić czegoś takiego jak "uzyskanie całego obiektu, dla którego jest prawdziwe", jeśli to robi jakąkolwiek różnicę.
Oczywiście, oba klucze są unikalne, a bool nie może być, ale myślałem, że wspomnę o tym dla jasności.
Jeśli nie było A lub B, byłby prosty std::map<int, bool>
.
Jedyne rozwiązanie, które obecnie widzę, to utworzenie opakowania zawierającego 2 set
s oraz vector
. Czy istnieje sposób na ułatwienie mi życia?
Uwaga: będzie zawierał co najwyżej sto krotek, więc wydajność nie powinna stanowić problemu. Dostęp liniowy jest akceptowalny.
Aby jeszcze wyraźniej, tutaj jest to, co chciałbym być w stanie to zrobić:
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
Jeśli to jest twoje prawdziwe wymaganie (int, int, bool), a nie przytaczany przykład, zrobiłbym to z dwiema mapami ('map'), jedną dla A i jedną dla B. –
To jest wyciąć przykład, ale co najważniejsze, to rozwiązanie byłoby ne ed wrapper i tak, aby utrzymać 2 'bool's zsynchronizowane. – 1ace