2017-01-14 13 views
0

私は、名前、プライベートint regNoとマークを格納しているプラ​​イベートマップを含むクラスStudentを持っています。これはコンストラクタです。私は、機能を二つのパラメータ鉱山をベクトルに格納されている学生の収集、およびユーザーが提供するfloatを取る関数を記述する必要がマップからすべての値を取得する

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

すべき出力学生の名前、および分を、平均値がユーザーが入力した値より大きい場合は、最大値と平均値を表示します。私の問題は、マップからすべての値(マーク)を取得する最も簡単な方法は何ですか?マップにアクセスしてすべてのマークを取得する場合と同様に、マークを返すクラスの関数が必要ですか。それを行うにはどうすればベストですか?ありがとう。あなたはすべてのマークのベクトルを返す関数を作成することができ

+0

ん[この質問](http://stackoverflow.com/questions/110157/how-to-retrieve-all-keys -or-values-from-a-stdmap-and-a-vector)ヘルプ? – merlinND

+0

@merlinNDマップがクラスのプライベートメンバーの場合は動作しませんが、それはどうですか? – Chaz

+0

実際には、必要に応じて(カプセル化が尊重されるように)値を返す 'Student'クラスのアクセサメソッドを作成できます。 – merlinND

答えて

3

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

右、マークがマップする関数を渡す必要がありますか?戻り型ベクトル? – Chaz

+0

クラス内にあり、戻り値の型はベクトルになります! –

関連する問題