Probleme STL map iterator [Résolu]

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

Merci RV2931 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

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