J'essaie de comprendre la syntaxe utilisée dans STL pour une classe. Notre professeur nous a sur ce site (http://www.sgi.com/tech/stl/Map.html) où je copiais le code ci-dessous:méthode déclarée dans struct en C++ (STL)
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;
}
Je ne savais pas que vous pouvez déclarer des méthodes dans struct. Comment ça marche?
Je suppose qu'avec cela, lorsque vous déclarez la carte nommée mois, l'utilisation du lustre dans le champ Comparer d'une carte alphabétise la carte. Mais toujours pas sûr de savoir comment cela fonctionne avec la syntaxe struct. Merci.
héritage est public par défaut aussi, c'est pourquoi j'utilise tant de structures ... –
@Alexandre: Bon point - J'ai incorporé cela dans la réponse. –
@Alexandre: Oooops ... aurait dû vérifier. Cela signifie que les deux extraits de code ne sont pas seulement quasiment équivalents mais exactement équivalents ... –