OVH Cloud OVH Cloud

Je comprends pas cette ligne de code

8 réponses
Avatar
arno
Bonjour a tous,

Je suis pas trop une star en C++, voici un bout de code que je ne
comprend absolument pas pouvez vous m'aider ?
Je suis sous Visual C++, et ILOG Views 3.1

Merci d'avance.


CSGChaine
CBench::chercheCodePays(CSGChaine codePaysDS)
{
static std::map<std::string,std::string> mapPaysDS; // C'est cette
ligne que je ne comprends pas

if( !mapPaysDS.size() ) {

ect ...

8 réponses

Avatar
Fabien LE LEZ
On 24 Oct 2005 09:54:54 -0700, "arno" :

static std::map<std::string,std::string> mapPaysDS; // C'est cette
ligne que je ne comprends pas


"mapPaysDS" est un tableau asssociatif, qui associe une chaîne à une
autre.

Un tel tableau pourrait par exemple indiquer le pays où se trouve
chaque ville :
Paris -> France
Londres -> Royaume-Uni
Lyon -> France

Et dans ce cas,
cout << mapPaysDS["Paris"];
afficherait "France" à l'écran.


De plus, ce tableau est "static", c'est-à-dire qu'il est partagé entre
toutes les instances de la classe.

Avatar
Aurélien Barbier-Accary
Bonjour a tous,

Je suis pas trop une star en C++, voici un bout de code que je ne
comprend absolument pas pouvez vous m'aider ?
Je suis sous Visual C++, et ILOG Views 3.1

Merci d'avance.


CSGChaine
CBench::chercheCodePays(CSGChaine codePaysDS)
{
static std::map<std::string,std::string> mapPaysDS; // C'est cette
ligne que je ne comprends pas

if( !mapPaysDS.size() ) {

ect ...



map est un conteneur de la STL dont la doc est disponible ici :
http://www.sgi.com/tech/stl/Map.html

Pour savoir quels sont les conteneurs de la STL et lequel choisir selon la
situation, une aide est donnée ici :
http://c.developpez.com/faq/cpp/?page=STL#STL_choix_conteneur

Dans ton exemple, mapPAYSDS est un conteneur associatif (map) de chaînes de
caractères qui est une variable statique de la fonction chercheCodePays de la
classe CBench.
Pour avoir plus d'infos sur les variables, données et fonctions statiques, voir:
http://c.developpez.com/faq/cpp/?page=static

Aurélien.

Avatar
Fabien LE LEZ
On Mon, 24 Oct 2005 19:14:08 +0200, Fabien LE LEZ
:

De plus, ce tableau est "static", c'est-à-dire qu'[...]


Pardon, j'avais mal lu le code. Ce tableau est le même à chaque appel
de la fonction, c'est-à-dire que si la fonction le modifie au premier
appel, cette modification sera toujours visible à l'appel suivant.

Par exemple :

void f()
{
static int n= 0;
cout << n << "n";
++n;
}

int main()
{
f(); // Affiche 0
f(); // Affiche 1
f(); // Affiche 2
}


À comparer avec :

void g()
{
int n= 0;
cout << n << "n";
++n; /* Cette modification est perdue -- un bon compilateur affiche
un warning. */
}

int main()
{
g(); // Affiche 0
g(); // Affiche 0
g(); // Affiche 0
}



ect ...


"etc.", en fait (abréviation de "et cetera", qui signifie "et les
autres). Note que "etc" est suivi d'un point (car c'est une
abréviation). Il n'y a pas de points de suspension, car justement
"etc." remplace les points de suspension.

Avatar
nico
Fabien LE LEZ wrote:


"etc.", en fait (abréviation de "et cetera", qui signifie "et les
autres). Note que "etc" est suivi d'un point (car c'est une
abréviation)


Je dirai même "et cætera" que je traduirai par "et toutes les autres choses"


--
nico

Avatar
Fabien LE LEZ
On Mon, 24 Oct 2005 19:28:52 +0200, nico :

Je dirai même "et cætera"


Le Larousse accepte les deux.

que je traduirai


Faudra qu'on m'explique, un jour, pourquoi tant de gens s'obstinent à
confondre le futur de l'indicatif et le présent du conditionnel.

Est-ce un signe des temps, l'impression que le futur est incertain ?

par "et toutes les autres choses"


Avatar
nico
Fabien LE LEZ wrote:

On Mon, 24 Oct 2005 19:28:52 +0200, nico :

Je dirai même "et cætera"


Le Larousse accepte les deux.

que je traduirai


Faudra qu'on m'explique, un jour, pourquoi tant de gens s'obstinent à
confondre le futur de l'indicatif et le présent du conditionnel.

Est-ce un signe des temps, l'impression que le futur est incertain ?

par "et toutes les autres choses"



:-D

alala :)

--
nico


Avatar
Michel Michaud
Dans le message ,
ect ...


"etc.", en fait (abréviation de "et cetera", qui signifie "et les
autres). Note que "etc" est suivi d'un point (car c'est une
abréviation). Il n'y a pas de points de suspension, car justement
"etc." remplace les points de suspension.


Tant qu'à avoir un cours de français, ajoutons aussi qu'il ne faut
pas répéter « etc. ». (« etc. etc. etc. » est donc fautif, sauf pour
faire une blague à ceux qui savent qu'il ne faut pas le répéter :-)

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/


Avatar
korchkidu
Fabien LE LEZ wrote:

Faudra qu'on m'explique, un jour, pourquoi tant de gens s'obstinent à
confondre le futur de l'indicatif et le présent du conditionnel.
Et moi, il faudra que l'on m'explique pourquoi tant de gens donnent des

cours de Francais avec des phrases bancales...;)

K.
PS: desole pour les fautes de Francais...