map



  • hallo, ich lerne gerade was über map - interessanterweise ist in dem recht umfangreichen Tutor C++ von Dirk Louis (C++ 11) nichts explizit enthalten, habe im Netz aber dies gefunden:

    http://www.poulter.de/projekte/Assoziative_Container_in_Cxx.pdf

    nun tue ich ein Beispiel (6 daselbst) in mein Xcode und er sagt das: "No viable overloded "="

    ich übersetze "ausweglos überladen" was mag das bedeuten, und erst das Gleichheitszeichen?



  • 1.- Mal interessenmäßig, deine Sprache ist etwas komisch. Kann es sein, dass du nicht nativ deutsch sprichst? Wenn ja, dann ist alles ok. Wenn doch, dann würde ich dich bitten, dass du deine Beiträge vor dem Abschicken nochmal Korrektur liest.

    2.- Was für ein Beispiel meinst du? In dem Aufsatz gibt es mehrere Beispiele, auf den ersten Blick sind die auch alle korrekt. Sie sind aber nicht durchnummeriert, welches meinst du daher? Das Listing in Kapitel 6 ist nämlich ok.

    3.- Es gibt öfters eine Diskrepanz zwischen Compilererrors/Warnings und denen der IDE. Wenn XCode dir sagt, dass da was falsch ist, dann sagt dir das der COmpiler noch nicht. Erst wenn dir beim kompilieren Fehler angezeigt werden ist auch was falsch.

    Die Fehlermeldung heisst sowas wie: "Es gibt keinen passenden operator=, der überladen ist." (Zuweisungsoperator)

    Zeig mal Code...



  • //  main.cpp
    #include <map>
    #include <string>
    #include <iostream>
    
    using std::map;
    using std::string;
    using std::cin;
    using std::cout;
    using std::endl;
    using std::pair;
     int main(){
        string s;
    
         map<string, int> zaehler;
    
         while( cin >> s )
             ++zaehler[s];
    
         s = "abcd";
    
        map<string, int>::const_iterator it;
        it = zaehler.find( s );
    
         pair<const string, int> element;
         element = *it;
    
     cout << "Erstes : " << element.first << endl;
     cout << "Zweites: " << element.second << endl;
      }
    

    Hier der Code ++ Er sagt, auch "Build failed", wenn ich ausführen lassen will das Programm



  • Skym0sh0 schrieb:

    1.- Mal interessenmäßig, deine Sprache ist etwas komisch. Kann es sein, dass du nicht nativ deutsch sprichst? Wenn ja, dann ist alles ok. Wenn doch, dann würde ich dich bitten, dass du deine Beiträge vor dem Abschicken nochmal Korrektur liest.

    Hast schon recht, sind wir eine zweisprachige Familie - aber ich dachte, ich eigentlich ganz deutsch gut schreiben kann. Wo sind denn Fehler?


  • Mod

    Hast schon recht, sind<->wir eine zweisprachige Familie - aber ich dachte, ich eigentlich ganz deutsch<->gut schreiben kann.
                                                                                  ^                                        vvvv
                                                                                  |__________<________<___________<_________|
    

    Hier der Code ++ Er sagt, auch "Build failed", wenn ich ausführen lassen will das Programm

    Fehlermeldung?



  • Richtig wäre ein "dass" nach dem Komma. "aber ich dachte, {Hauptsatz}" ist extrem holprig bzw falsch. Sone ist Muttersprachler, er sollte das wissen.



  • Danke, hier die Fehlermeldung: http://www.bilder-hochladen.net/files/kiyp-5-e4da-png.html

    Es reicht eigentlich, wenn jemand mir mal was praktikables sendet, wo ich praktisch map und multimap studieren und ausprobieren kann.



  • Pair hat einen const string, map nicht. Warum?



  • schreib in zeile 25 von deinem code (im bild) einfach:

    map<string, int>::value_type element;
    


  • ich hab das vor dem it reingesetzt

    map<string, int>::const_iterator it;
        map<string, int>::value_type element;
         it = zaehler.find( s );
    
         pair<const string, int> element;
         element = *it;
    

    und dann sagt er bei Zeile 28 (pair.) "redefinition of element"



  • troll? ist doch offensichtlich dass ich damit meinte, du sollst die bisherige definition von "element" damit ersetzen...


Log in to reply