У меня есть структура, содержащую 3 поле, два int
сек (назовем их и В) и bool
(С).Тройная карты в том числе 2 ключа
Я хочу создать своего рода массив этой структуры и иметь доступ к нему через любой из ключей (A или B), получая объект отверстия (с A, B и C) взамен. Мне не нужно делать что-то вроде «получения всего объекта, для которого bool истинно», если это имеет значение.
Очевидно, что оба ключа уникальны, и bool не может быть, но я думал, что упомянул об этом ради ясности.
Если бы не было А или В, это было бы просто std::map<int, bool>
.
Единственным решением, которое я сейчас вижу, является создание обертки, содержащей 2 set
и vector
. Есть ли способ облегчить мне жизнь?
NB: В нем будет не более ста кортежей, поэтому производительность не должна быть проблемой. Линейный доступ является приемлемым.
Чтобы сделать это еще более ясным, вот что я хотел бы быть в состоянии сделать:
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
Если это ваше реальное требование (int, int, bool), а не пример сокращения, я бы просто сделал это с двумя картами ('map'), один для A и один для B. –
Это сократите пример, но, самое главное, это решение будет В любом случае, обертка должна содержать синхронизацию 2 'bool'. – 1ace