diff --git a/AdvancedCppV2/Presentation/exercises/students/students.cpp b/AdvancedCppV2/Presentation/exercises/students/students.cpp index 032a64d..1e23a1b 100644 --- a/AdvancedCppV2/Presentation/exercises/students/students.cpp +++ b/AdvancedCppV2/Presentation/exercises/students/students.cpp @@ -15,7 +15,10 @@ struct Student { }; std::vector filterStudents(const std::vector>& students, double minAverage) { - // Implement method here + std::vector ptr; + rn::transform(students, std::back_inserter(ptr), [](const std::unique_ptr &s){return s.get();}); + std::erase_if(ptr, [minAverage](Student* s){return s->average_ < minAverage;}); + return ptr; } int main() { @@ -30,5 +33,7 @@ int main() { students.push_back(std::make_unique(811111, "Mike", 4.45)); const auto res = filterStudents(students, 4.45); - // Print result here using ranges (do not create friend operator<<) -} \ No newline at end of file + for(const auto& [ind, nam, av] : res | std::views::transform([](Student *ptr){return *ptr;})){ + printf("%d %s %f\n", ind, nam.c_str(), av); + } +}