Advertisement
Guest User

stable_partition

a guest
Nov 13th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.41 KB | None | 0 0
  1. template <class InIt, class Pred>
  2. InIt stable_partition(InIt Begin, InIt end, Pred p) {
  3.     using val = std::iterator_traits<InIt>::value_type;
  4.     std::vector<val> failed;
  5.  
  6.     InIt dest = Begin;
  7.  
  8.     for (InIt src = Begin; src != end; ++src)
  9.         if (p(*src))
  10.             * dest++ = std::move(*src);
  11.         else
  12.             failed.push_back(std::move(*src));
  13.     auto ret = dest;
  14.     for (auto const& f : failed)
  15.         * dest++ = f;
  16.     return ret;
  17. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement