| // Copyright 2013 The Flutter Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef BASE_CONTAINER_UTILS_H_ | |
| #define BASE_CONTAINER_UTILS_H_ | |
| #include <set> | |
| #include <vector> | |
| namespace base { | |
| template <class T, class Allocator, class Predicate> | |
| size_t EraseIf(std::vector<T, Allocator>& container, Predicate pred) { | |
| auto it = std::remove_if(container.begin(), container.end(), pred); | |
| size_t removed = std::distance(it, container.end()); | |
| container.erase(it, container.end()); | |
| return removed; | |
| } | |
| template <typename Container, typename Value> | |
| bool Contains(const Container& container, const Value& value) { | |
| return container.find(value) != container.end(); | |
| } | |
| template <typename T> | |
| bool Contains(const std::vector<T>& container, const T& value) { | |
| return std::find(container.begin(), container.end(), value) != | |
| container.end(); | |
| } | |
| } // namespace base | |
| #endif // BASE_CONTAINER_UTILS_H_ |