Add implementations of find and find_if that take a container
authorMikko Rasa <tdb@tdb.fi>
Sat, 5 Nov 2016 11:28:12 +0000 (13:28 +0200)
committerMikko Rasa <tdb@tdb.fi>
Sat, 5 Nov 2016 11:28:12 +0000 (13:28 +0200)
Rather than an iterator pair.  Searching through an entire container is
a very common use case.

source/core/algorithm.h [new file with mode: 0644]

diff --git a/source/core/algorithm.h b/source/core/algorithm.h
new file mode 100644 (file)
index 0000000..5d75763
--- /dev/null
@@ -0,0 +1,34 @@
+#ifndef MSP_CORE_ALGORITHM_H_
+#define MSP_CORE_ALGORITHM_H_
+
+#include <algorithm>
+
+namespace Msp {
+
+template<typename Container, typename T>
+typename Container::iterator find(Container &cont, const T &value)
+{
+       return std::find(cont.begin(), cont.end(), value);
+}
+
+template<typename Container, typename T>
+typename Container::const_iterator find(const Container &cont, const T &value)
+{
+       return std::find(cont.begin(), cont.end(), value);
+}
+
+template<typename Container, typename Predicate>
+typename Container::iterator find_if(Container &cont, Predicate pred)
+{
+       return std::find_if(cont.begin(), cont.end(), pred);
+}
+
+template<typename Container, typename Predicate>
+typename Container::const_iterator find_if(const Container &cont, Predicate pred)
+{
+       return std::find_if(cont.begin(), cont.end(), pred);
+}
+
+} // namespace Msp
+
+#endif