Скажем, например, у меня есть:ниже и UPPER_BOUND на отсортированный вектор структуры
struct my_stuff{
long my_value;
struct less_than{
bool operator()(const my_stuff &a, const my_stuff &b){
return a.my_value < b.my_value;
};
};
В моем коде у меня есть:
vector<my_stuff> my_vec;
Этот вектор уже содержит все объекты, которые я заинтересован в . Затем я отсортировал свой вектор на основе переменной члена my_value
sort(my_vec.begin(), my_vec.end(), my_stuff::less_than());
Все в порядке. Теперь мой вектор объектов с переменной-членом «my_value» теперь сортируется на основе значения «my_value».
Мой вопрос/проблема: Как получить нижний и верхний границы этого вектора на основе «my_value». Например, если мне дали, что мне нужны все объекты в диапазоне [low, high] my_value, я бы хотел, чтобы мой lower_bound указывал на самый нижний объект в этой границе (низкий) и мой upper_bound, чтобы указать на мой высокий.
То, что я пытался до сих пор есть ...
auto low = lower_bound(myvec.begin()->my_value, my_vec.end()->my_value, val);
И то же самое для верхней границы, кроме как с «UPPER_BOUND» вместо «lower_bound». Как я могу это сделать? То, что я пытаюсь сделать после того, как я отсортировал свой вектор объектов, - это возможность найти все объекты в определенном диапазоне. Я считаю, что lower_bound и upper_bound - правильный способ обойти это, но я не понимаю, как это писать. Спасибо за любую помощь или руководство!
просто замечание: вы можете избавиться от 'struct less_than' и вместо этого реализовать меньший оператор в' my_stuff' –