std::map operteur [ ] et size ().

Le
bastien.armand
Bonjour a tous,

Voila, je me pose une question a laquelle je n'ai pu repondre.
Soit le programme suivant :

#include <map>
#include <iostream>

int main ()
{
std::map <int, int> MaMap;
MaMap[1] = MaMap.size ();
std::cout << "La valeur de MaMap[1] est : " << MaMap[1] << std::endl;
return 0;
}

Le probleme est le suivant, l'instruction MaMap[1] = MaMap.size (); a
t'elle un comportement determine ?

L'execution me donne soit 1 (compilation avec gcc) soit 0 (compilation
avec le compilateur de visual c++).

Bon dimanche.
PS : dsl, pas d'accents sous la main
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
kanze
Le #734554
(Bastien) wrote in message
news:
Voila, je me pose une question a laquelle je n'ai pu repondre. Soit le
programme suivant :

#include <map>
#include <iostream>

int main ()
{
std::map <int, int> MaMap;
MaMap[1] = MaMap.size ();
std::cout << "La valeur de MaMap[1] est : " << MaMap[1] << std::endl;
return 0;
}

Le probleme est le suivant, l'instruction MaMap[1] = MaMap.size (); a
t'elle un comportement determine ?


Non. Ce n'est pas un comportement indéfini (au sens de la norme), mais
le résultat n'est pas spécifié -- le compilateur peut appeler ou
map::operator[] ou map::size() d'abord.

L'execution me donne soit 1 (compilation avec gcc) soit 0 (compilation
avec le compilateur de visual c++).


Je crois que ce sont les seuls deux résultats permis.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

Publicité
Poster une réponse
Anonyme