Passando um parâmetro para uma função de comparação?
Ao usar o algoritmo de classificação STL em um vetor, quero passar minha própria função de comparação, que também aceita um parâmetro.
Por exemplo, idealmente, quero fazer uma declaração de função local como:
int main() {
vector<int> v(100);
// initialize v with some random values
int paramA = 4;
bool comp(int i, int j) {
// logic uses paramA in some way...
}
sort(v.begin(), v.end(), comp);
}
No entanto, o compilador reclama disso. Quando tento algo como:
int main() {
vector<int> v(100);
// initialize v with some random values
int paramA = 4;
struct Local {
static bool Compare(int i, int j) {
// logic uses paramA in some way...
}
};
sort(v.begin(), v.end(), Local::Compare);
}
O compilador ainda reclama: "erro: uso do parâmetro da função que contém"
O que devo fazer? Devo fazer algumas variáveis globais com uma função de comparação global ..?
Obrigado.