Глава 18. Классы-контейнеры 471

h04711.jpg

#define RWSTD_NO_NAMESPACE ftinclude <cstring.h> ^include <iostream.h> ftinclude <algorith.h>

#include <vector.h> ftinclude <student3.h>

string LetterGradefSTUDENT &s, float f) { '

string result = s.Getldt);

result += " has an ";

// Изменить рейтинг студентов. s.SetGrade(s.GetGrade()+f);

if (s.GetGradeO < 1.0)

result += "F.\n";

else if (s.GetGradeO < 2.0)

result += "D.\n";

else if (s.GetGradeO < 3.0)

result += "C.\n";

else if (s.GetGradeO < 3.5)

result += "B.\n";

else

result += "A. Good job!\n";

return result;

}

int main()

{

vector<STUDENT> studentVector;

studentVector.push_back(STUDENT("John Smith", 1.0));

studentVector.push_back(STUDENT("Donald Brown", 2.4));

studentVector.push_back(STUDENT("Connie Enid", 3.3));

student Vector.push_back(STUDENT("Alex Peterson", 0.5)), float gradeChange[4] = { 0.5, 0.2, 0.2, 1.0 };

transform(studentVector.begin(), studentVector.end(), gradeChange, ostream iterator<string>(cout, "\n"), LetterGrade) ;

return 0;

Как видно из листинга 18.20, определить собственный объект-функцию несложно. STL предлагает несколько полезных объектов-функций'. Они разделяются на три категории:

• Арифметические

• Сравнения

• Логические