У меня есть функция A
, которая принимает функцию предиката в качестве аргумента.
У меня есть еще одна функция B
и принимает char
и возвращает int
, и функция, которая принимает C
int
и возвращает bool
.Как связать одну функцию с другим
Мой вопрос заключается в том, как связать B
и C
, чтобы передать его функции A
.
Что-то вроде:
A(bindfunc(B,C))
Я знаю boost::bind
работает, но я ищу СТЛ решения.
Например,
int count(vector<int> a, pred func); // A
//this functions counts all elements which satisfy a condition
int lastdigit(int x); // B
//this function outputs last digit(in decimal notation) of number x
bool isodd(int x); // C
//this function tells if number x is odd
// i want to find the count of all such numbers in a vector whose last digit is odd
// so i want something like
count(vector<int> a, bind(lastdigit, isodd))
Один плохой путь был бы сделать избыточную функцию D
, которая явным образом выполняет связать операцию.
Возможно, более конкретный пример поможет ... – Cogwheel
Зачем нужна вики сообщества? (BTW, чтобы быть ясным, пожалуйста, покажите объявление функции A, B и C.) – kennytm
int count (вектор a, pred func); // эти функции подсчитывают все элементы, которые удовлетворяют условию int lastdigit (int x); // эта функция выводит последнюю цифру (в десятичной нотации) числа x bool isodd (int x); // эта функция указывает, является ли число x нечетным Я хочу найти количество всех таких чисел в вектор, последняя цифра нечетная , так что я хочу что-то вроде графа (вектор а, связывания (lastdigit, ISODD)) пожалуйста, дайте мне знать, если я не ясно –
mukul