]> git.lyx.org Git - lyx.git/blobdiff - src/support/lyxalgo.h
fix typo that put too many include paths for most people
[lyx.git] / src / support / lyxalgo.h
index 2d8d49f06c943b3bf615987e90238e8a987803e2..323f8e32f16a8b1269f00a817a53a72e52704b7a 100644 (file)
@@ -4,6 +4,8 @@
 #define LYX_ALGO_H
 
 #include <utility>
+#include <iterator>
+#include <algorithm>
 
 namespace lyx {
 
@@ -44,7 +46,7 @@ struct firster {
 
 template <class InputIter, class OutputIter, class Func>
 OutputIter copy_if(InputIter first, InputIter last,
-              OutputIter result, Func func) 
+              OutputIter result, Func func)
 {
        for (; first != last; ++first) {
                if (func(*first)) {
@@ -54,5 +56,22 @@ OutputIter copy_if(InputIter first, InputIter last,
        return result;
 }
 
-}  // end of namespace lyx
+
+/// A slot in replacement for std::count for systems where it is broken.
+template <class Iterator, class T>
+typename std::iterator_traits<Iterator>::difference_type
+count (Iterator first, Iterator last, T const & value)
+{
+#ifdef HAVE_STD_COUNT
+       return std::count(first, last, value);
+#else
+       std::iterator_traits<Iterator>::difference_type n = 0;
+       while (first != last)
+               if (*first++ == value) ++n;
+       return n;
+#endif
+}
+
+} // namespace lyx
+
 #endif