Probleme STL map iterator [Résolu]

Messages postés
185
Date d'inscription
samedi 21 mai 2005
Dernière intervention
16 juillet 2016
- - Dernière réponse : RV2931
Messages postés
185
Date d'inscription
samedi 21 mai 2005
Dernière intervention
16 juillet 2016
- 21 juil. 2008 à 16:26
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"
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
185
Date d'inscription
samedi 21 mai 2005
Dernière intervention
16 juillet 2016
3
Merci
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é

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de RV2931
Messages postés
185
Date d'inscription
samedi 21 mai 2005
Dernière intervention
16 juillet 2016
0
Merci
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"
Commenter la réponse de RV2931

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.