2017-01-14 2 views
0

Ich habe eine Klasse Student, die einen Namen, eine private int regNo und eine private Karte, die eine Speicherung ihrer Marken enthält, enthält. Dies ist der Konstruktor.Erhalte alle Werte von einer Karte

Student::Student (string const& name, int regNo):Person(name), regNo(regNo) 
{ 
    map<string, float> marks; 
} 

Ich brauche eine Funktion zu schreiben, die zwei Parameter eine Sammlung von Studenten nimmt Mine in einem Vektor gespeichert sind, und einen Schwimmer, dass der Benutzer bereitstellt, die Funktion sollte der Name des Studenten ausgegeben und die min, Max- und Durchschnittsmarkierungen, wenn ihr Durchschnittswert größer ist als eine vom Benutzer bereitgestellte Eingabe. Mein Problem ist, was ist der einfachste Weg, um alle Werte (Marken) aus der Karte zu bekommen? Wie brauche ich beim Zugreifen auf die Karte und beim Abrufen aller Markierungen eine Funktion in der Schülerklasse, die eine Markierung zurückgibt, wie geht das am besten? Vielen Dank.

+0

Does [diese Frage] gibt (http://stackoverflow.com/questions/110157/how-to-retrieve-all-keys -oder-Werte-from-a-stdmap-and-put-sie-in-einem-Vektor-Hilfe? – merlinND

+0

@ MerlinND, die nicht funktioniert, wenn die Karte ein privates Mitglied der Klasse ist, oder? – Chaz

+0

In der Tat können Sie dann eine Accessor-Methode in Ihrer 'Student'-Klasse erstellen, die die Werte nach Bedarf zurückgibt (so dass die Kapselung berücksichtigt wird). – merlinND

Antwort

3

Sie können eine Funktion erstellen, die einen Vektor für alle Marken

vector<string> vec; 
for(map<string,float>::iterator it = marks.begin(); it != marks.end(); ++it) 
{ 
    vec.push_back(it->first); 
} 
+0

Richtig, was brauche ich um die Funktion der Markenkarte zu übergeben? und ist der Rückgabetyp Vektor ? – Chaz

+0

Es ist innerhalb der Klasse, und der Rückgabetyp wird Vektor sein! –

Verwandte Themen