I am trying to implement a simple deterministic finite automaton. I have an automaton with the std::vector<transitions*>. Now whenever an input is received, it should be determined which transition to execute. This is what I want to achieve with the following function!
Now this is what the function needs to do: search in a vector for the unique transition, for which both cursor->input = inputValue and cursor->from = inputFrom is true, then return cursor (This is done by the emit transitionToExecute(cursor), don't worry about that).   
This is what I've got so far.
void automaton::getTransition(int inputValue, state inputFrom){
    iterA cursor = find(transitions.begin(), transitions.end(), inputValue);
    if(cursor!=transitions.end()){
        if(cursor->from.getId() == inputFrom.getId()){
            emit transitionToExecute(cursor);
            return;
        }
    }
}
EDIT: I've tried the answers given to the linked question, but I don't really understand how they work. Does anyone care to explain? Here's what I tried. I don't understand how this technique works, so I'd appreciated a detailed answer.
struct isCorrectTransition : std::unary_function<transition*, bool> {
    // The first variable that must be matched.
   int inputValue;
    // I want to use this second variable, too! How to do that?
    state inputFrom;
    // How does the following line work? What does it do? 
    // How to add in state inputFrom?
    isCorrectTransition(int inputValue):inputValue(inputValue){ }
    bool operator()(transition* const& inputTransition) const {
        return ((inputTransition->getInput() == inputValue) && (inputTransition->getFrom().getId() == inputFrom.getId()));
    }
};
void automaton::getTransition(int inputValue, state inputFrom){
    searchInput = inputValue;
    searchState = inputFrom;
    iterA cursor = find_if(transitions.begin(), transitions.end(), isCorrectTransition(inputValue));
    if(cursor!=transitions.end()){
        emit transitionToExecute(*cursor);
        return;
    }
}
