Advertisement
Eksekk

Remove_if

Jun 10th, 2021
648
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.69 KB | None | 0 0
  1. #include <iostream>
  2. #include <functional>
  3. #include <vector>
  4.  
  5. template<typename Iter, typename Function>
  6. Iter remove_if(Iter begin, Iter end, Function func)
  7. {
  8.     auto replace = begin;
  9.  
  10.     while (begin != end)
  11.     {
  12.         if (!func(*begin))
  13.         {
  14.             iter_swap(replace, begin);
  15.             ++replace;
  16.         }
  17.         ++begin;
  18.     }
  19.     return replace;
  20. }
  21.  
  22. int main()
  23. {
  24.     std::vector<int> vector {-7, 5, 2, 2, 11, 2, 3};
  25.     auto result = remove_if(vector.begin(), vector.end(), [](int element) {return element < 3;});
  26.     for (auto iterator = vector.cbegin(); iterator < result;)
  27.     {
  28.         std::cout << *iterator++ << " ";
  29.     }
  30.     std::cout << std::endl;
  31. }
  32.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement