Add wrappers for lower_bound and upper_bound
authorMikko Rasa <tdb@tdb.fi>
Fri, 2 Apr 2021 11:05:04 +0000 (14:05 +0300)
committerMikko Rasa <tdb@tdb.fi>
Fri, 2 Apr 2021 11:05:04 +0000 (14:05 +0300)
source/core/algorithm.h

index 63d1cf4cce7d33e45a6cda0355e0a536b778b964..804db7b9d146905ae77cef973c8feae0233511fb 100644 (file)
@@ -29,6 +29,54 @@ inline typename Container::const_iterator find_if(const Container &cont, Predica
        return std::find_if(cont.begin(), cont.end(), pred);
 }
 
+template<typename Container, typename T>
+inline typename Container::iterator lower_bound(Container &cont, const T &value)
+{
+       return std::lower_bound(cont.begin(), cont.end(), value);
+}
+
+template<typename Container, typename T>
+inline typename Container::const_iterator lower_bound(const Container &cont, const T &value)
+{
+       return std::lower_bound(cont.begin(), cont.end(), value);
+}
+
+template<typename Container, typename T, typename Predicate>
+inline typename Container::iterator lower_bound(Container &cont, const T &value, Predicate pred)
+{
+       return std::lower_bound(cont.begin(), cont.end(), value, pred);
+}
+
+template<typename Container, typename T, typename Predicate>
+inline typename Container::const_iterator lower_bound(const Container &cont, const T &value, Predicate pred)
+{
+       return std::lower_bound(cont.begin(), cont.end(), value, pred);
+}
+
+template<typename Container, typename T>
+inline typename Container::iterator upper_bound(Container &cont, const T &value)
+{
+       return std::upper_bound(cont.begin(), cont.end(), value);
+}
+
+template<typename Container, typename T>
+inline typename Container::const_iterator upper_bound(const Container &cont, const T &value)
+{
+       return std::upper_bound(cont.begin(), cont.end(), value);
+}
+
+template<typename Container, typename T, typename Predicate>
+inline typename Container::iterator upper_bound(Container &cont, const T &value, Predicate pred)
+{
+       return std::upper_bound(cont.begin(), cont.end(), value, pred);
+}
+
+template<typename Container, typename T, typename Predicate>
+inline typename Container::const_iterator upper_bound(const Container &cont, const T &value, Predicate pred)
+{
+       return std::upper_bound(cont.begin(), cont.end(), value, pred);
+}
+
 template<typename Container>
 inline void sort(Container &cont)
 {