Estoy tratando de cambiar el orden predeterminado de los elementos de un conjunto de números enteros para ser lexicográfico en lugar de numérica, y no puedo conseguir lo siguiente para compilar con g ++:std :: set encargo comparador
file.cpp:
bool lex_compare(const int64_t &a, const int64_t &b)
{
stringstream s1,s2;
s1 << a;
s2 << b;
return s1.str() < s2.str();
}
void foo()
{
set<int64_t, lex_compare> s;
s.insert(1);
...
}
me sale el siguiente error:
error: type/value mismatch at argument 2 in template parameter list for ‘template<class _Key, class _Compare, class _Alloc> class std::set’
error: expected a type, got ‘lex_compare’
¿qué estoy haciendo mal?
en realidad mi problema parecía ser un cierre adicional> en la declaración del conjunto. Estoy cerrando la pregunta como falsa. (usando una función lineal en lugar de un funtor es perfectamente válido para STL) –
el código en la pregunta es más simple de lo que usted propone (para un simple comparador de función) y funciona muy bien. –
@Omry: Yo estaría interesado en saber qué compilador que está utilizando: http://codepad.org/IprafuVf –