В STL есть классы операторов, такие как less, equal_to, more_equal и т. Д. Как легко объединить их для использования, например, с функцией remove_if?
Например, я хочу удалить в векторах элементы, которые больше 0 И меньше 3 И не равны 2, тогда это будет что-то вроде:
remove_if (v.begin(), v.end(), bind2nd(greater<int>(),0) + bind2nd(less<int>(),3) + not1(bind2nd(equal_to<int>(), 2)));
Пользователь во время работы программы может указать параметры фильтрации, например, он может написать: удалить, если x> 0 && x <3 && x! = 2, или он может написать: удалить, если x> 5 || x == 3. Затем команда анализируется и соответствующие операторы с их аргументами объединяются в один предикат.