Student_infos extrace_fails(Student_infos& students) { Student_infos fail; Student_infos::iterator iter = students.begin(); while (iter != students.end()) { if (fgrade(*iter)) { fail.push_back(*iter); iter = students.erase(iter); } else ++iter; } return fail; }
int main() { Student_infos vs; Student_info s; string::size_type maxlen = 0; while (read(cin, s)) { maxlen = max(maxlen, s.name.size()); vs.push_back(s); } // vs.sort(compare); Student_infos fails = extract_fails(vs); for (Student_infos::const_iterator i = fails.begin(); i != fails.end(); ++i) cout << i->name << " " << grade(*i) << endl; return 0; }
Student_infos extract_fails(Student_infos& students) { Student_infos fail; #ifdef _MSC_VER Student_infos::iterator iter = students.begin(); #else Student_infos::iterator iter = students.begin(); #endif while (iter != students.end()) { if (fgrade(*iter)) { fail.push_back(*iter); iter = students.erase(iter); } else ++iter; } return fail; }