// Copyright 2021 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef BASE_CONTAINERS_CXX20_ERASE_INTERNAL_H_ #define BASE_CONTAINERS_CXX20_ERASE_INTERNAL_H_ // Internal portion of base/containers/cxx20_erase_*.h. Please include those // headers instead of including this directly. namespace base { namespace internal { // Calls erase on iterators of matching elements and returns the number of // removed elements. template size_t IterateAndEraseIf(Container& container, Predicate pred) { size_t old_size = container.size(); for (auto it = container.begin(), last = container.end(); it != last;) { if (pred(*it)) it = container.erase(it); else ++it; } return old_size - container.size(); } } // namespace internal } // namespace base #endif // BASE_CONTAINERS_CXX20_ERASE_INTERNAL_H_