sort(mMyClassVector.begin(), mMyClassVector.end(),
[](const MyClass & a, const MyClass & b)
{
return a.mProperty > b.mProperty;
});
Me gustaría usar una función lambda para ordenar clases personalizadas en lugar de vincular un método de instancia. Sin embargo, el código anterior produce el error:
error C2564: 'const char *': una conversión de estilo de función a un tipo incorporado solo puede tomar un argumento
Funciona bien con boost::bind(&MyApp::myMethod, this, _1, _2)
.
Respuestas:
Entendido.
Supuse que descubriría que el operador> devolvió un bool (por documentación). Pero aparentemente no es así.
fuente
operator>
, entonces.a.mProperty>b.mProperty
definitivamente producirá un bool.operator<
asíoperator>
?<
, para el orden ascendente estándar. ¡Edité la respuesta para dejar en claro que era un tipo descendente, pero aparentemente mi edición no fue útil y se borró!Para mucho código, puede usarlo así:
Reemplace "vec" con su clase y eso es todo.
fuente
¿Puede ser el problema con la línea "a.mProperty> b.mProperty"? Tengo el siguiente código para trabajar:
El resultado es:
fuente