У меня есть вектор объектов. Моя структура данных является следующее:Использование функции предиката в std :: remove_if
class my_class{
float a; int b;
};
my_class obj;
vector<my_class> vec;
Вектор VEC содержит данные формы:
vec
((10.0,2),(100,3),(19.0,3)...)
Теперь из вектора VEC Я намерен удалить элементы, которые меньше или равен последнему элементу из VEC ... Для этого я использую стирать и remove_if функции:
vec.erase(std::remove_if(vec.begin(), vec.end(), predicate_function(vec, (vec.end()-1).a, (vec.end()-1).b)), vec.end());
predicate_function, который у меня есть делает итерации по «VEC». Однако это побеждает цель использования std :: remove_if. Может кто-то, пожалуйста, помогите, как должна выглядеть функция predicate_function для того, чтобы remove_if работал. Я не хочу использовать lambda_function. Также моим компилятором является GCC
Теперь внутри predicate_function как бы Я выполняю сравнение с последним объектом вектора ... поскольку предикатный объект передается параметрами только одного итератора. PS: Спасибо, что ответили –
@JannatArora Посмотрите мое редактирование, как это сделать с помощью функтора. – Yuushi
Не кажется ли вам, что 'remove_if()' удаляет то, что нужно удалить? Почему вы сохранили 'vec.erase()'? Не только это, но vec.end() может измениться между тем, как вы его называете последним параметром 'erase()', и возвращает time_ remove_if() '. –