Probleme STL map iterator [Résolu]

Signaler
Messages postés
185
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
16 juillet 2016
-
Messages postés
185
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
16 juillet 2016
-
Bonjour,

j'ai un petit problème avec l'utilisation des map et iterateur, voici grosso modo mon problème :

std::map<std::string,std::string> Map;
std::map::iterator it;

for(it = Map.begin();it != Map.end();it++)
{
     cout<<(*it).first()<<" "<<(*it).second()<<endl;
}

Le code me paraît bon, (sauf erreur de frappe), mais Visual Studio ne semble déjà pas trouver le type de it. Intellisense ne trouve aucune information, donc pas de complétion auto, et ça déjà, c'est chiant. Y a-t-il un truc a faire pour que Visual studio/intellisense reconnaisse les STL ??? ça me paraît bizarre.
 Et voici les erreurs qu'il me sort, je ne comprend pas trop...

error C2228: la partie gauche de '.second' doit avoir un type class/struct/union le type est 'std::_Tree<_Traits>::iterator::reference'
error C2228: la partie gauche de '.first' doit avoir un type class/struct/union le type est 'std::_Tree<_Traits>::iterator::reference'
error C2262: 'it' : ne peut pas être détruit(e)
error C2512: 'std::_Tree<_Traits>::iterator' : aucun constructeur par défaut approprié disponible
error C2582: 'operator =' fonction non disponible dans 'std::_Tree<_Traits>::iterator'
error C2676: '++' : 'std::map<_Kty,_Ty>::mapped_type' binaire ne définit pas cet opérateur ou une conversion vers un type acceptable pour l'opérateur prédéfini
        with
        [
            _Kty=std::string,
            _Ty=std::string
        ]
error C2955: 'std::map' : l'utilisation d'un modèle de classe nécessite une liste d'arguments de modèle
error C2955: 'std::map' : l'utilisation d'un modèle de classe nécessite une liste d'arguments de modèle c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\map(149) : voir la déclaration de 'std::map'
error C3861: 'it': identificateur introuvable, même avec une recherche qui dépend de l'argument
error C3861: 'it': identificateur introuvable, même avec une recherche qui dépend de l'argument
error C3861: 'it': identificateur introuvable, même avec une recherche qui dépend de l'argument
error C3861: 'it': identificateur introuvable, même avec une recherche qui dépend de l'argument
error C3861: 'it': identificateur introuvable, même avec une recherche qui dépend de l'argument

J'ai essayer en mettent des (*it)-> à la place de (*it). mais idem...

Merci

RV

L'intelligence est la chose la mieux répartie chez l'homme, car quoi qu'il en soit pourvu, il a toujours l'impression d'en avoir assez. "Descartes"
A voir également:

2 réponses

Messages postés
185
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
16 juillet 2016

oups, , j'ai trouvé. Il faut repréciser les types pour l'itérateur aussi, c'est évident.... maintenant..

std::map<std::string,std::string> Map;
std::map</gras>::iterator it;

for(it = Map.begin();it != Map.end();it++)
{
     cout<<(*it).first()<<" "<<(*it).second()<<endl;
}

désolé
Messages postés
185
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
16 juillet 2016

Il y a biensur un
#include <map> au dessus...

L'intelligence est la chose la mieux répartie chez l'homme, car quoi qu'il en soit pourvu, il a toujours l'impression d'en avoir assez. "Descartes"