В настоящее время я программирую шахматную программу на C++. Алгоритм поиска - alphaBeta, поэтому я сортирую ходы перед тем, как проходить через них и оценивать их. Мой основной класс - это позиция класса, которая выполняет весь поиск, а также содержит функцию сравнения двух перемещений.C++ Тип функтора, возвращаемого связыванием
class Position{
private:
//This vector holds the moves of the current line, to be evaluated
vector<Move> currentSearch(4000);
// This function uses internal fields of class Position to determine, whether move1 or move2 should be searched first
bool compare(const Move& move1, const Move& move2);
int alphaBeta(int ply, int depth, int alpha, int beta);
}
Теперь сортировать движется в currentSearch, я всегда называю в Alphabeta
sort(currentSearch.begin(), currentSearch.end(), bind(mem_fn(&Position::compare),this,_1,_2));
Итак, производящая функтора с bind(mem_fn(&Position::compare),this,_1,_2));
делается несколько раз внутри одного поиска, чтобы создать тот же функтор ,
Я хотел бы иметь член класса Position, который инициализирован bind(mem_fn(&Position::compare),this,_1,_2));
Но какой тип должен иметь этот элемент или что это правильный способ его разработки?