2009-06-22 1 views

Répondre

3

Si vous voulez dire std::map, il stocke des paires de valeurs. Dans chaque paire, la première valeur est appelée clé et peut être utilisée pour rechercher rapidement l'autre valeur associée.

Vous pouvez écrire:

std::map<std::string, int> ages; 
ages["Fred"] = 52; 
ages["Sue"] = 31; 

std::cout << "Fred's age is " << ages["Fred"] << std::endl; 
0

Qu'est-ce qu'une carte - c'est une structure de données qui contient des paires de valeurs associées. Chaque paire est composée d'une clé et d'une valeur. Chaque clé d'une carte doit être unique, mais des clés différentes peuvent avoir les mêmes valeurs. Les cartes sont souvent utilisées pour mettre en cache ou implémenter des tables de recherche, un peu comme un dictionnaire (qui est en fait ce que les cartes sont appelées dans certaines langues). En ce qui concerne la façon d'implémenter une carte en C++, la réponse courte est - vous n'avez pas. Vous utilisez std :: map ou l'une de ses variantes.

0

Map est le type de collection end, il est implémenté en C++ à la fin STL (Standard Template Library) ici est l'explication officielle de la documentation de la bibliothèque.

La carte est un conteneur associatif trié qui associe des objets de type clé aux objets de type données. Map est un conteneur associatif par paire, ce qui signifie que son type de valeur est pair. Il s'agit également d'un conteneur associatif unique, ce qui signifie qu'aucun élément n'a la même clé. Map a la propriété importante que l'insertion d'un nouvel élément dans une carte n'invalide pas les itérateurs qui pointent vers des éléments existants. L'effacement d'un élément d'une carte n'invalide pas non plus les itérateurs, sauf, bien sûr, pour les itérateurs qui pointent vers l'élément en cours d'effacement.

Exemple

struct ltstr 
{ 
    bool operator()(const char* s1, const char* s2) const 
    { 
    return strcmp(s1, s2) < 0; 
    } 
}; 

int main() 
{ 
    map<const char*, int, ltstr> months; 

    months["january"] = 31; 
    months["february"] = 28; 
    months["march"] = 31; 
    months["april"] = 30; 
    months["may"] = 31; 
    months["june"] = 30; 
    months["july"] = 31; 
    months["august"] = 31; 
    months["september"] = 30; 
    months["october"] = 31; 
    months["november"] = 30; 
    months["december"] = 31; 

    cout << "june -> " << months["june"] << endl; 
    map<const char*, int, ltstr>::iterator cur = months.find("june"); 
    map<const char*, int, ltstr>::iterator prev = cur; 
    map<const char*, int, ltstr>::iterator next = cur;  
    ++next; 
    --prev; 
    cout << "Previous (in alphabetical order) is " << (*prev).first << endl; 
    cout << "Next (in alphabetical order) is " << (*next).first << endl; 
} 

Here est la documentation complète du type de la carte en STL.

J'espère que cette aide.

Questions connexes