]> git.lyx.org Git - lyx.git/blobdiff - src/support/lyxalgo.h
* src/support/lyxalgo.h
[lyx.git] / src / support / lyxalgo.h
index 6bccfb12966bd75906e70470d093882dd2d9965d..19c2485a34241b9cf5ee51c69d92360b2a0e24d7 100644 (file)
@@ -6,7 +6,7 @@
  *
  * \author Lars Gullik Bjønnes
  *
- * Full author contact details are available in file CREDITS
+ * Full author contact details are available in file CREDITS.
  *
  * A variety of useful templates.
  */
@@ -17,7 +17,6 @@
 #include <utility>
 #include <iterator>
 #include <algorithm>
-#include <set>
 
 
 namespace lyx {
@@ -82,7 +81,7 @@ 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;
+       typename std::iterator_traits<Iterator>::difference_type n = 0;
        while (first != last)
                if (*first++ == value) ++n;
        return n;
@@ -93,16 +92,10 @@ count (Iterator first, Iterator last, T const & value)
 template<class C>
 void eliminate_duplicates(C & c)
 {
-       C unique_c;
-       std::set<typename C::value_type> s;
-
-       for (typename C::iterator p = c.begin(); p != c.end(); ++p) {
-               if (s.find(*p) == s.end()) {
-                       unique_c.push_back(*p);
-                       s.insert(*p);
-               }
-       }
-       swap(c, unique_c);
+       // It is a requirement that the container is sorted for
+       // std::unique to work properly.
+       std::sort(c.begin(), c.end());
+       c.erase(std::unique(c.begin(), c.end()), c.end());
 }
 
 } // namespace lyx