]> git.tdb.fi Git - libs/core.git/blobdiff - source/core/algorithm.h
Add wrappers for lower_bound and upper_bound
[libs/core.git] / source / core / algorithm.h
index 5d75763d2617697fcf3b009e587ce84a4b327a42..804db7b9d146905ae77cef973c8feae0233511fb 100644 (file)
 namespace Msp {
 
 template<typename Container, typename T>
-typename Container::iterator find(Container &cont, const T &value)
+inline 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)
+inline 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)
+inline 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)
+inline typename Container::const_iterator find_if(const Container &cont, Predicate pred)
 {
        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)
+{
+       std::sort(cont.begin(), cont.end());
+}
+
+template<typename Container, typename Predicate>
+inline void sort(Container &cont, Predicate pred)
+{
+       std::sort(cont.begin(), cont.end(), pred);
+}
+
+template<typename Container>
+inline void stable_sort(Container &cont)
+{
+       std::stable_sort(cont.begin(), cont.end());
+}
+
+template<typename Container, typename Predicate>
+inline void stable_sort(Container &cont, Predicate pred)
+{
+       std::stable_sort(cont.begin(), cont.end(), pred);
+}
+
 } // namespace Msp
 
 #endif