<map> anwenden



  • Hallo zusammen,

    ich habe folgendes Problem:

    Ich muss Datensetze anhand eines Schlüssels Gruppieren. Für den Datensatz ansich habe ich bereits eine Klasse geschrieben.

    Ich wollte das Problem mit <map> lösen.

    map<int,vector<Datenobjekt> >::iterator it;   //int ist die GruppenID
    

    Wie kann ich es jetzt umsetzten, dass ich ein Datenobjekt dem Datenvektor der richtigen Gruppe zuweise?



  • Wo ist das Problem?

    #include <map>
    #include <vector>
    #include <iostream>
    #include <string>
    
    struct Data
    {
    	std::string str;
    
    	Data(const std::string& str_) : str(str_) { }
    };
    
    typedef std::vector<Data> data_vec_t;
    
    typedef std::map<int, data_vec_t> objekt_map_t;
    
    int main()
    {
    	objekt_map_t m;
    
    	m[10].push_back(Data("A"));
    	m[10].push_back(Data("B"));
    	m[10].push_back(Data("C"));
    
    	m[5].push_back(Data("A"));
    
    	for (objekt_map_t::iterator itm = m.begin(); itm != m.end(); ++itm)
    	{
    		std::cout << "--- " << itm->first << " ---\n";
    
    		for (data_vec_t::iterator itv = itm->second.begin(); itv != itm->second.end(); ++itv)
    		{
    			std::cout << itv->str << "\n";
    		}
    
    		std::cout << "\n";
    	}
    
    	return 0;
    }
    


  • Vielen, vielen Dank!
    War genau das, was ich gebraucht habe.



  • Je nach Einsatzzweck könnte std::multimap besser geeignet sein. 😉


Anmelden zum Antworten