Похоже, ваши Month
и Year
являются двумя независимыми ключами, и что иногда вы ищете неуникальные результаты (например, указан год, месяц не указан). Простое решение - хранить ваши записи в std::map<Year, std::map<Month, std::vector<Records> > my_data
; Затем
- , чтобы получить записи из конкретного
Year
, вы можете перебрать результат my_data[Year("2020")]
- , чтобы получить записи из конкретного
Month
(независимо от Year
), for (const auto& el: my_data) doSomething(el.second[Month("September")]);
= для получения результатов от конкретных Year
и Month
my_data[Year("2010")][Month("December")]
Начиная с C ++ 20 вы можете использовать year и месяц из стандартной библиотеки C ++; До этого вы можете просто определить Year
и Month
структуры и предоставить оператор «меньше чем».