std::unordered_map identificateur non déclaré à l'aide de Visual C++ 2008
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
int main()
{
unordered_map< int, string > m;
m[1] = "one";
m[2] = "two";
m[4] = "four";
m[3] = "three";
m[2] = "TWO!";
cout << m[2] << endl;
m.clear();
return 0;
}
Je suis en apprentissage et ne peut pas le comprendre. Le compilateur renvoie l'erreur type unordered_map
est non déclaré.
Je suis à l'aide de Visual C++ 2008 Express Edition.
OriginalL'auteur munish | 2011-06-11
Vous devez vous connecter pour publier un commentaire.
Dans Visual Studio 2008, les classes dans le Rapport Technique 1 (TR1) sont dans l'espace de noms std::tr1.
Ajouter:
à votre code.
OriginalL'auteur MW_dev
Dans le TR1
unordered_map
est disponible à partir de la<tr1/unordered_map>
fichier d'en-tête commestd::tr1::unordered_map
.Dans la prochaine C++0x norme, il est disponible à partir de la
<unordered_map>
fichier d'en-tête commestd::unordered_map
.de sorte que vous devriez utiliser
<tr1/unordered_map>
en-tête etstd::tr1::unordered_map
espace de noms pour vc 2008 parce que vc 2008 ne prend pas en charge C++0x.Répondre au problème que vous avez cité dans le commentaire.
Aussi, assurez-vous de télécharger la feature pack pour VS2008!
Vérifier en vertu de nouvelles fonctionnalités prises en charge liste.
merci encore, je ne savait pas à ce sujet.....feature pack pour VS2008! ......
OriginalL'auteur Alok Save
Visual C++ 2008 déclare
unordered_map
dans l'espace de nomsstd::tr1
, pas dansstd
. Voir http://msdn.microsoft.com/en-us/library/bb982522(SV.90).aspx, section Exigences.OriginalL'auteur Oswald
Votre code fonctionne comme prévu dans VS2010. Avec la sortie de DEUX! si c'est ce que vous êtes de ne pas obtenir. Peut-être vous devriez changer pour VC++ 2010 Express Edition.
Probablement VC++ 2008 ne comprennent pas TR1
OriginalL'auteur Cem Kalyoncu
En C++03,
unordered_map
est défini dansstd::tr1
espace de nom (s'il est défini).De sorte que vous devez utiliser:
OriginalL'auteur Nawaz
Peut-être vous êtes à la recherche pour
stdext::hash_map
à la place (inclus dans<hash_map>
)?VC++ 2008 express, à ma connaissance, ne comprend pas TR1.
OriginalL'auteur Justin Aquadro