2016-06-11 2 views
0

Je voudrais comprendre comment une clé sous la forme de boost :: tuple est recherchée dans la carte, où Compare=std::less. Par exemple, voici l'extrait du code, je travaille sur:Recherche de carte en utilisant boost :: tuple comme clé

typedef boost::tuple<std::string, std::string> Key; 
void *Data; 

typedef std::map<Key, Data> FileDataMap; 
FileDataMap file_map; 

lookup_data(std::string s1, std::string s2) 
{ 
    ... 
    fk = boost::make_tuple(s1, s2); 

    FileDataMap::iterator itr = file_map.find(fk); 
    ... 
    ... 
} 

insert_data(std::string s1, std::string s2, void *fdata) 
{ 
    ... 
    fk = boost::make_tuple(s1, s2); 
    file_map.insert(std::make_pair(fk, fdata)); 
    ... 
    ... 
} 

Au moment d'insérer une valeur dans la carte, supposons que s1 est abc et s2 est xyz. Pendant la recherche, comment la correspondance de clé est-elle déterminée?

est une comparaison de chaîne de s1 et s2 fait avec abc et xyz respectivement, individuellement? Si oui, les opérateurs de comparaison std::string sont-ils utilisés?

Merci!

Répondre