Sql IN аналог в boost :: multi_index

Я использую boost :: multi_index и получаю данные следующим образом:

sample_set::index<my_indx>::type::iterator s, end;
boost::tie(s,end) = samples.get<my_indx>().equal_range(
boost::make_tuple( "Dress", "Red" ));

Этот код восстанавливает все красные платья. Есть ли способ получить красные и желтые платья одним запросом? Как в SQL:

"Select * from clothes where type = 'Dress' and color in ('Red', 'Yellow')"

2

Решение

Невозможно сделать это с помощью одной операции: функции-члены поиска Boost.MultiIndex всегда возвращают диапазоны (или итераторы, которые можно рассматривать как диапазоны из одного элемента), но результат такого запроса, который вы описываете, не является диапазоном — его элементы не обязательно являются смежными. Таким образом, вам нужно выполнить два запроса, один для («Платье», «Красный») и один для («Платье», «Желтый»), а затем последовательно пройти два результирующих диапазона.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector