C++ Gibt es einen Parameter namens skip?



  • ich schreibe zurzeit einen Code für eine Prüfung. Hier gab es dieses Beispiel:
    vector<Spieler> engagieren(const vector<Spieler>&): Nimmt alle Spieler aus der als Parameter empfangenen
    Liste in die Mannschaft auf. Die neuen Spieler werden in der Reihenfolge, in der sie im Parameter
    auftreten, an das Ende der Spielerliste der Mannschaft angehängt. Sollte ein Spieler gleichen Namens bereits
    in der Mannschaft sein, so ist dieser nicht hinzuzufügen, sondern einfach zu überspringen. Zu retournieren ist die
    Liste der übersprungenen Spieler in der ursprünglichen relativen Reihenfolge.
    Den ersten Teil verstehe ich schon aber beim zweiten mit dem überspringen habe ich keine Ahnung. Kann mir einer einen Tipp geben in welche richtung es gehen soll?



  • Gemeint ist damit nur, daß du bei jedem Spieler überprüfen mußt, ob dieser schon in der Spielerliste vorhanden ist:

    • wenn ja, dann zu der Liste der übersprungenen Spieler hinzufügen (und diese Liste dann am Ende der Funktion zurückgeben)
    • wenn nein, dann zur Spielerliste hinzufügen


  • @th69
    Ok also einfach eine weitere Liste erstellen. Wieso komm ich nicht selber drauf. DANKE!



  •   vector<Spieler> Mannschaft::engagieren(const vector<Spieler>& u)
    {
    	for(unsigned int i = 0; i <= z.size(); i++)
    	{
    		if(u!=get_Name)
    		{
    			spieler.push_back(u.at(i));
    		}
    		else
    		{
    			uebersprungen.push_back(u.at(i));
    		}
    		
    		return uebersprungen;
    	}
    }
    

    Letztendlich habe ich es so gelöst. Kann einer mal drüberschauen?



  • Hast du mal versucht, das zu übersetzen?
    Hast du mal versucht, das zu benutzen?



  • Du brauchst ne weitere Schleife um zu überprüfen, ob der Spieler u[i] bereits in der Liste vorhanden ist. Dafür musst du nochmals über die bereits vorhandene Liste iterieren und den Namen ausmachen. Am besten benutzt du dafür sowas wie std::find_if().



  • @spiri DANKE!


Anmelden zum Antworten