| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
DvNe
Registrado: 02 Abr 2014 Mensajes: 5
| Publicado: 07/04/2014 12:52 pm | | | Título: unary_negate |
| Buenas estoy escribiendo la siguiente funcion
| Código: | #include <iostream> #include <cstring> #include <functional> #include <algorithm>
using namespace std;
class EsDigito { public: bool operator() (const char& c) const { return isdigit(c); } };
int main() { unary_negate<bool> EsAlfabetico (EsDigito); char letras2[] = " 452485A56321"; inicio = letras; fin = letras + sizeof(letras)/sizeof(char);
if (find_if(inicio,fin,EsAlfabetico())) cout << "Alfabetico" << endl; return 0; }
|
Cuando compilo me sale el siguiente error:
prueba.cpp:35:39: error: faltan argumentos para la función std::unary_negate<bool> EsAlfabetico(EsDigito)’ prueba.cpp:30:22: nota: se declara aquí
Alguien me puede explicar el por qué |
| | Volver arriba | |  | daltomi
Registrado: 28 Abr 2007 Mensajes: 335 Ubicación: Argentina
| Publicado: 07/04/2014 3:55 pm | | | Título: |
| Buenas. Según la documentación unary_negate.
Ejemplo para que compile.
| Código: | class EsDigito { public: bool operator() (const char& c) const { return isdigit(c); } typedef char argument_type; };
int main() { EsDigito es_digito; unary_negate<EsDigito> EsAlfabetico (es_digito); string letras("452085152321");
if ( letras.end() != find_if(letras.begin() , letras.end() , EsAlfabetico )) cout << "Alfabetico" << endl; return 0; }
|
Si no vas a utilizar los especificadores de acceso de una clase, además de public, define mejor una simple estrcutura.
Como unary_negate no es más que una negación de una unary_function, se podría realizar asi:
| Código: | struct EsDigito : public unary_function<char, bool> { bool operator() (const char c) const { return isdigit(c); } };
int main() { string letras("452085152321");
if ( letras.end() != find_if(letras.begin() , letras.end() , not1(EsDigito()))) cout << "Alfabetico" << endl;
return 0; }
|
Nota que not1() retorna una unary_negate. |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |