Итак, у меня есть boost::multi_index_container
с несколькими неуникальными индексами.Я хотел бы найти элегантный способ сделать запрос стиля реляционной базы данных, чтобы найти все элементы, которые соответствуют набору критериев, используя несколько индексов.
Например, учитывая список соединений между устройствами, я хотел бы найти все элементы, источником которых является «сервер», а местом назначения - «pc2».У меня есть индекс для Source и индекс для Dest.
Source Dest/Port
---- ---------
server pc1 23
server pc1 27
server pc1 80
server pc2 80 <- want to find these two
server pc2 90 <-
printer pc3 110
printer pc1 110
scanner mac 8080
Обычно я могу сделать lower_bound
и upper_bound
для первого индекса (для соответствия 'server'), затем выполнить линейноепоиск между этими итераторами, чтобы найти те элементы, которые соответствуют в столбце "Dest", но это не очень удовлетворительно, так как у меня есть второй индекс.Существует ли элегантный stl / boost-like способ воспользоваться тем, что есть два индекса, и избежать линейного поиска (или эквивалентного объема работы, такого как добавление всех промежуточных результатов в другой контейнер и т. Д.)?
(Очевидно, что в этом примере линейный поиск был бы самым быстрым, но если бы было 10000 элементов с «сервером» в качестве источника, наличие второго индекса стало бы хорошим.)
Любые идеи приветствуются!