Afficher un message
Vieux 21/04/2008, 02h11   #7
Fabien LE LEZ
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: std::map<>::operator[] const

On Mon, 21 Apr 2008 02:53:09 +0200, Mickaël Wolff
<mickael.wolff@laposte.net>:

> Non, j'ai essayé. il n'y a pas de map::find const


Bien sûr que si, heureusement !
Tu dois même pouvoir écrire quelque chose comme ça :

template <class Cle, class Valeur, class Less>
Valeur GetDansMap (std::map <Cle, Valeur, Less> const& map_,
Cle const& cle, Valeur const& valeur_par_defaut= Valeur())
{
typename std::map <Cle, Valeur, Less>::const_iterator
it= map_.find (cle);
if (it == map_.end())
{
return valeur_par_defaut;
}
else
{
return (*it).second;
}
}

ou bien :

template <class Cle, class Valeur, class Less>
Valeur GetDansMap (std::map <Cle, Valeur, Less> const& map_,
Cle const& cle)
{
typename std::map <Cle, Valeur, Less>::const_iterator
it= map_.find (cle);
if (it == map_.end())
{
throw quelque_chose;
}
else
{
return (*it).second;
}
}



Tu peux aussi écrire ton propre map :


template <class Cle, class Valeur> class MonMap
{
public:
void Set (Cle const& cle, Valeur const& valeur)
{ data[cle]= valeur; }

Valeur const& Get (Cle const& cle) const
{
Data::const_iterator it= data.find (cle);
if (it == data.end())
{
throw quelque_chose;
}
return (*it).second;
}

Valeur const& operator[] (Cle const& cle) const
{ return Get(cle); }

private:
typedef typename std::map<Cle,Valeur> Data;
Data data;
};



  Réponse avec citation
 
Page generated in 0,06124 seconds with 9 queries