как мне ограничить поиск в boost::multi_index
результатом предыдущего поиска?
Например: предположим, у меня есть класс прямоугольника с внутренним значением, подобным этому:
class MyRect
{
public:
int width;
int height;
double value;
}
и мне нужна структура данных такого объекта для ответа на запросы типа «дано input_rectangle
- какой объект MyRect
содержится в этом прямоугольнике и имеет наибольшее значение?»
Я мог бы использовать 'multi_index', как это:
struct given_value{};
struct given_width{};
struct given_height{};
typedef multi_index_container<MyRect,
indexed_by<
ordered_non_unique< tag<given_value>,
member<MyRect, double, &MyRect::value>,
ordered_non_unique< tag<given_width>,
member<MyRect, int, &MyRect::width>,
ordered_non_unique< tag<given_height>,
member<MyRect, int, &MyRect::height>, >
>
> MyDataStructure;
typedef MyDataStructure::index<given_width>::type MyDataStructureGivenWidth;
typedef MyDataStructureGivenWidth::iterator WidthIterator;
Если мой input_rectangle
имеет ширину input_width
, я мог бы использовать что-то вроде этого:
WidthIterator start_iter = data_object.get<given_width>().begin();
WidthIterator end_iter = data_object.get<given_width>().upper_bound(input_width);
Но как мне ограничить поиск высоты ядра двумя заданными итераторами?
(И после этого найти объект с наибольшим значением в этом результате?)