Probleme mit Map..
-
Hallo, will eine Map mit eindeutigen Schlüssel als std:string, jeder schlüssel enthält eine liste !
Beim einfügen eine listenelements mit entsprechenden key, muss gecheckt werden ob key schon existiert. Wenn nein key erstellen und eelemnt in liste anfügen!
Aber komm damit nich zurecht..
//MAP mit Liste std::map<std::string,std::list<UINT> > m_Groups; //anfügen void addMod(std::string strGroup,UINT iModul){ //Wenn Schlüssel nich gefunden wurde, dann anlegen if(m_Groups.find(strGroup) == m_Groups.end()) m_Groups.insert(std::pair<strGroup,iModul); //Anfügen m_Groups[strGroup].push_back(iModul); }
-
Was funktioniert daran denn nicht? Und ich glaube du musst einen Schlüssel nicht anlegen, der wird beim ersten Zugriff darauf angelegt. Also kannst du imho den "//Wenn Schlüssel nich gefunden wurde, dann anlegen"-Teil weglassen

-
Ich glaube du meinst sowas:
std::map<std::string, std::list<UINT> >:: iterator it; it = m_Groups.find(strGroup); if(it == m_Groups.end()) m_Groups[strGroup] = std::list<UINT>(); it->second.push_back(iModul);
-
Es kommen tausend "error C2784:" 'bool std::operator <(const............
Fehler und
c:\Programme\Microsoft Visual Studio .NET 2003\Vc7\include\functional(139): error C2676: binary '<' : 'const std::string' does not define this operator or a conversion to a type acceptable to the predefined operator
-
#include <string>vergessen?
-
da kommen die gleichen fehler;)
-
m_Groups.insert(std::pair<strGroup,iModul);Mir fällt da ein < anstatt einer ( auf...
-
@MFK: ohman .. aber echt.. dachte ich hab schon irgendwo anders string verwendet:) Das kommt davon wenn man an mehren projekten gleichzeit arbeitet;)
-
Das hier wird bei mir ohne Fehler kompiliert:
#include <map> #include <list> #include <string> typedef unsigned int UINT; std::map<std::string,std::list<UINT> > m_Groups; //anfügen void addMod(std::string strGroup,UINT iModul) { //Anfügen m_Groups[strGroup].push_back(iModul); } int main() { }Kannst du ein Minimalbeispiel liefern, das deinen Fehler reproduziert?
-
m_Groups.insert(std::pair<strGroup,iModul);Die Zeile ist ein einziger Syntax-Fehler - wenn du std::pair verwendest, mußt du dahinter auch die Typen angeben (in <...> Klammern) - alternativ könntest du auch make_pair nehmen. Und eine implizite Umwandlung von int nach list<int> gibt es auch nicht.
-
danke jung;) MFK hatte recht mit dem std::string vergessen;) es klappt wunder bar THX