Index: base/stl_util.h |
diff --git a/base/stl_util.h b/base/stl_util.h |
index 89a53b070ef515cf81d584098e7aace8ed2ba201..e937d2f3ed9157d433cc62fb71958bd9c71cd6d9 100644 |
--- a/base/stl_util.h |
+++ b/base/stl_util.h |
@@ -90,6 +90,14 @@ void STLDeleteContainerPairSecondPointers(ForwardIterator begin, |
} |
} |
+// Counts the number of instances of val in a container. |
+template <typename Container, typename T> |
+typename std::iterator_traits< |
+ typename Container::const_iterator>::difference_type |
+STLCount(const Container& container, const T& val) { |
+ return std::count(container.begin(), container.end(), val); |
+} |
+ |
// To treat a possibly-empty vector as an array, use these functions. |
// If you know the array will never be empty, you can use &*v.begin() |
// directly, but that is undefined behaviour if |v| is empty. |
@@ -195,6 +203,14 @@ bool ContainsKey(const Collection& collection, const Key& key) { |
return collection.find(key) != collection.end(); |
} |
+// Test to see if a collection like a vector contains a particular value. |
+// Returns true if the value is in the collection. |
+template <typename Collection, typename Value> |
+bool ContainsValue(const Collection& collection, const Value& value) { |
+ return std::find(collection.begin(), collection.end(), value) != |
+ collection.end(); |
+} |
+ |
namespace base { |
// Returns true if the container is sorted. |