ho una struttura contenente 3 campi, due int
s (chiamiamoli A e B) ed un bool
(C).mappa Triple tra cui 2 chiavi
Voglio creare una sorta di matrice di quella struttura ed essere in grado di accedervi tramite uno qualsiasi dei tasti (A o B), ottenendo in cambio l'oggetto foro (con A, B e C). Non avrò bisogno di fare qualcosa del tipo "ottenere tutto l'oggetto per il quale il bool è vero", se questo fa alcuna differenza.
Ovviamente, entrambe le chiavi sono uniche e il bool non può essere, ma ho pensato di parlarne per motivi di chiarezza.
Se non c'era A o B, sarebbe un semplice std::map<int, bool>
.
L'unica soluzione che attualmente vedo è quella di creare un wrapper contenente 2 set
s e uno vector
. C'è un modo per semplificarmi la vita?
NB: Conterrà al massimo un centinaio di tuple, quindi le prestazioni non dovrebbero essere un problema. L'accesso lineare è accettabile.
Per rendere ancora più chiaro, qui è quello che mi piacerebbe essere in grado di fare:
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
Se questo è il tuo reale requisito (int, int, bool) e non un esempio ridotto, lo farei semplicemente con due mappe ('mappa'), una per A e una per B. –
È un esempio ridotto, ma soprattutto questa soluzione non sarebbe ha comunque un wrapper per mantenere sincronizzati i 2 'bool's. – 1ace