map<string, string> einfügen von Daten in diese Karte?
Brauche ich, um Zeichenfolgen zu speichern in key-value-format. So bin mit Karte wie unten.
#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
}
Erhalte folgende Fehlermeldung bei Zeile einfügen
error C2784: 'bool std::operator <(const std::_Tree<_Traits> & const std::_Tree<_Traits> &)' : konnte nicht ableiten, template-argument für " const std::_Tree<_Traits> &' von 'const std::string'
Versuchte ich make_pair Funktion auch wie unten, aber auch das meldet die gleichen Fehler.
m.insert(make_pair(s1, v1));
Pls lassen Sie mich wissen, was ist falsch und was ist die Lösung für obiges problem.
Nach der Lösung des oben genannten Problems kann ich wie unten abrufen Wert basierend auf Schlüssel
m.find(s1);
InformationsquelleAutor bjskishore123 | 2010-09-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, Sie vermissen eine
#include <string>
irgendwo.Vielleicht haben Sie eine andere Klasse, deren name ist
string
irgendwie kollidiert mitstd::string
?oder vielleicht, dass ist nicht der einzige compiler-Fehler
Ich habe getestet, diese auf den neuesten VS 2012-version, und es tut die gleiche Sache. Es ist sehr verwirrend und eigenartig, dass es nicht beschweren sich über die string nicht definiert wird.
InformationsquelleAutor Etienne de Martel
Könnten Sie versuchen, diese:
Scheint es der compiler nicht weiß, wie man strings vergleichen. Vielleicht ist Sie nicht wissen genug über die Saiten, doch der ist zu konzentriert auf Ihre
map
um das herauszufinden ATM.InformationsquelleAutor Daren Thomas
Versuchen
m[s1] = v1;
statt.Und hier haben Sie keine Möglichkeit zu sagen, wenn Sie eingefügt wird ein neuer Knoten oder aktualisiert einen bestehenden.
InformationsquelleAutor tdammers
Ich denke, es hat mit der Tatsache zu tun, dass
<map>
enthalten nicht<string>
, aber<xstring>
. Wenn Sie das hinzufügen von Elementen auf der Karte finden muss, um die korrekte position in der Karte durch Sortierung. Beim Sortieren, ordnen versucht, suchen Sie dieoperator <
, von denen er findet die richtige Position für das neue element. Es gibt jedoch keineoperator <
für die definition der Zeichenkette in<xstring>
, so erhalten Sie die Fehlermeldung.InformationsquelleAutor Default
Haben Sie mehrere Möglichkeiten, wie Sie strings speichern in key-value-format jetzt:
Und durchqueren es in c++11:
InformationsquelleAutor TadejP
Hier ist der Weg zu set up map<...,...>
InformationsquelleAutor Alexey Tkach
können Sie versuchen, std:: vor-pair-Mädchen kann es funktionieren
InformationsquelleAutor Shreyas Handiyekar
Die s1 ist eine ganze Zahl, die Sie hoffen, pass as string...das ist wahrscheinlich die Hauptursache für den Fehler!!
InformationsquelleAutor badrequest