std::string, comme une clé dans une std::map à l'aide d'un comparer opérateur

Je suis en train d'utiliser un std::string, comme une clé dans une std::map cependant, je suis incapable de trouver() correctement. Mon code est un peu compliqué et large donc c'est un petit programme qui illustre le problème que je vais avoir. Si quelqu'un pouvait me dire pourquoi cela ne fonctionne pas, je lui en serais très reconnaissant.

Grâce.

#include <stdio.h>
#include <string>
#include <map>

struct comparer
{
    public:
    bool operator()(const std::string x, const std::string y)
    {
         return x.compare(y)==0;
    }
};

int main(int argc, char *argv[])
{
    std::map<std::string, int, comparer> numbers;
    numbers.insert(std::pair<std::string,int>("One",1));
    numbers.insert(std::pair<std::string,int>("Two",2));
    numbers.insert(std::pair<std::string,int>("Three",3));
    numbers.insert(std::pair<std::string,int>("Four",4));
    numbers.insert(std::pair<std::string,int>("Five",5));


    std::map<std::string, int, comparer>::iterator it=numbers.find("Three");
    if(it!=numbers.end())
        printf("The number is %d\n",(*it).second);
    else
        printf("Error, the number is not found\n");
}

OriginalL'auteur Chromex | 2011-12-04