map<string,vector<string> > ? sinnvoll?



  • airdamn:

    sieht gut aus dein beispielt, hilft mir weiter danke an euch!



  • std::multimap?



  • std::multimap
    

    würde ich her auch verwenden...



  • noch eine weitere frage meinerseits.

    ich habe jetzt die map mit diensten als key und pro dienst ein value vector mit allen dienstleistern.

    jetzt würde ich gerne wenn der key in der map gefunden wird den vector dazu nach einem bestimmten string durchsuchen und bei einem treffer entprechend reagieren.

    ich habe hier im forum folgendne beitrag von michael E. gefunden komm aber nicht klar was bar zurück gibt wenn kein treffer gemacht wurde?

    vector<string> foo;
    vector<string>::iterator bar = find(foo.begin(), foo.end(), "Frank");
    


  • mit

    it != foo.end();
    

    hättest Du einen Treffer, bei it == foo.end() nicht.



  • danke



  • Hallo , ich habe ein ähnliches Problem welches ich mit dem Beipiel hier lösen könnte.

    int main()
    {
        typedef std::vector<std::string> Providers;
        typedef std::map<std::string, Providers> ServiceProviders;
        ServiceProviders services;
        services["myService"].push_back("Provider 1");
        services["myService"].push_back("Provider 2");
        services["myServic"] = std::vector<std::string>();
        ServiceProviders::iterator it = services.find("myServic");
        if(it != services.end())
        {
            if(it->second.size() > 0)
                std::copy(it->second.begin(), it->second.end(), ostream_iterator<std::string>(std::cout, "\n"));
            else
                cout << "no provider for this service..." << endl;
        }
        else
            cout << "service not found..." << endl;
    }
    

    Allerdings habe ich eine kleine VerständnisFrage zu:

    services["myServic"] = std::vector<std::string>();
    

    Irgendwie verstehe ich das nicht, man weist dem Object services einen vector zu?

    Bitte kann jemand das evtl. kurz erklären?



  • typedef std::vector<std::string> Providers;
        typedef std::map<std::string, Providers> ServiceProviders;
    

    Ja. Weil du dort drin ja ein Providers gemappt hast und das wiederum ein vector von strings ist.



  • drakon schrieb:

    typedef std::vector<std::string> Providers;
        typedef std::map<std::string, Providers> ServiceProviders;
    

    Ja. Weil du dort drin ja ein Providers gemappt hast und das wiederum ein vector von strings ist.

    Also heisst das ich ein neues leeres vector object(Providers) dem services object zuweise?



  • Ich meine wozu brauche ich hier in diesem Beispiel:

    int main()
    {
        typedef std::vector<std::string> Providers;
        typedef std::map<std::string, Providers> ServiceProviders;
        ServiceProviders services;
        services["myService"].push_back("Provider 1");
        services["myService"].push_back("Provider 2");
        services["myServic"] = std::vector<std::string>();
        ServiceProviders::iterator it = services.find("myServic");
        if(it != services.end())
        {
            if(it->second.size() > 0)
                std::copy(it->second.begin(), it->second.end(), ostream_iterator<std::string>(std::cout, "\n"));
            else
                cout << "no provider for this service..." << endl;
        }
        else
            cout << "service not found..." << endl;
    }
    

    Diesen code:

    services["myServic"] = std::vector<std::string>();
    

    Ich suche nach einer map "myServic" mit leerem vector object als value??



  • Ich denke, dass das ein Beispiel war, um die Funktionsweise einer std::map zu verdeutlichen.


Anmelden zum Antworten