map<string, string> comment faire pour insérer des données dans cette carte?
J'ai besoin de stocker des chaînes de valeur de la clé de format. Je le suis aussi à l'aide de la Carte ci-dessous.
#include<map>
using namespace std;
int main()
{
map<string, string> m;
string s1 = "1";
string v1 = "A";
m.insert(pair<string, string>(s1, v1)); //Error
}
Suis d'erreur ci-dessous à la ligne d'insertion
erreur C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Traits> &)' : ne peut pas en déduire argument de modèle pour " const std::_Tree<_Traits> &' de 'const std::string'
J'ai essayé make_pair fonction comme ci-dessous, mais aussi les rapports de la même erreur.
m.insert(make_pair(s1, v1));
Pls laissez-moi savoir quel est le problème et quelle est la solution pour le problème ci-dessus.
Après la résolution de problème ci-dessus, puis-je utiliser comme ci-dessous pour récupérer la valeur est basée sur les principaux
m.find(s1);
OriginalL'auteur bjskishore123 | 2010-09-14
Vous devez vous connecter pour publier un commentaire.
Je pense que vous manquez une
#include <string>
quelque part.Vous avez peut-être une autre classe dont le nom est
string
qu'en quelque sorte, entre en collision avecstd::string
?ou peut-être que ce n'est pas la seule erreur du compilateur
J'ai testé cela sur les dernières VS version 2012 et il fait la même chose. Il est très déroutant et curieux qu'il n'a pas à se plaindre de la chaîne n'est pas définie.
OriginalL'auteur Etienne de Martel
Pourriez-vous essayer ceci:
Il semble que le compilateur ne sait pas comment faire pour comparer des chaînes de caractères. Peut-être qu'elle ne le sait pas assez sur les chaînes de encore, mais c'est trop concentré sur votre
map
de comprendre que, sur ATM.OriginalL'auteur Daren Thomas
Essayer
m[s1] = v1;
à la place.Et cela vous donne aucun moyen de savoir si vous avez inséré un nouveau nœud ou de mise à jour pré-existant.
OriginalL'auteur tdammers
Je pense que cela a à voir avec le fait que
<map>
ne comprend pas<string>
, mais<xstring>
. Lorsque vous ajoutez des éléments à la carte, il doit trouver la position correcte de la carte par le tri. Lors du tri, de la carte tente de localiser leoperator <
, à partir de laquelle il trouve le bon emplacement pour le nouvel élément. Cependant, il n'est pasoperator <
pour la définition de la chaîne dans la<xstring>
, ainsi vous obtenez le message d'erreur.OriginalL'auteur Default
Vous avez plusieurs possibilités comment stocker des chaînes de valeur de la clé de format maintenant:
Et traverse en c++11:
OriginalL'auteur TadejP
Ici est la méthode de configuration de la carte<...,...>
OriginalL'auteur Alexey Tkach
vous pouvez essayer de std:: avant de la paire, il peut travailler
OriginalL'auteur Shreyas Handiyekar
Le s1 est un entier que vous espérez passer comme une chaîne de caractères...c'est probablement la principale cause de l'erreur!!
OriginalL'auteur badrequest