erase_if.hxx 624 B

1234567891011121314151617181920212223242526272829
  1. // -*-c++-*-
  2. // vim: set ft=cpp:
  3. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  4. file Copyright.txt or https://cmake.org/licensing for details. */
  5. #ifndef cm_bits_erase_if_hxx
  6. #define cm_bits_erase_if_hxx
  7. namespace cm {
  8. namespace internals {
  9. template <typename Container, typename Predicate>
  10. void erase_if(Container& cont, Predicate pred)
  11. {
  12. for (typename Container::iterator iter = cont.begin(), last = cont.end();
  13. iter != last;) {
  14. if (pred(*iter)) {
  15. iter = cont.erase(iter);
  16. } else {
  17. ++iter;
  18. }
  19. }
  20. }
  21. } // namespace internals
  22. } // namespace cm
  23. #endif