]> git.tdb.fi Git - builder.git/blobdiff - source/buildinfo.cpp
Convert all list containers to vectors
[builder.git] / source / buildinfo.cpp
index 29254489cf5e6c4b8e747e2ad59cd554492c1a0f..43e1427df6a1cc3cea3a6ae1cd1acec6129d2ac5 100644 (file)
@@ -8,18 +8,19 @@ using namespace Msp;
 
 namespace {
 
-/** Removes any duplicate entries from a list, leaving only the first one.  The
-order of other elements is preserved.  O(nlogn) efficiency. */
+/** Removes any duplicate entries from a vector, leaving only the first one.
+The order of other elements is preserved. */
 template<typename T>
-void unique(list<T> &l)
+void unique(vector<T> &v)
 {
-       set<T> seen;
-       for(auto i=l.begin(); i!=l.end(); )
+       vector<T> seen;
+       for(auto i=v.begin(); i!=v.end(); )
        {
-               if(seen.count(*i))
-                       l.erase(i++);
+               auto j = lower_bound(seen, *i);
+               if(j!=seen.end() && *j==*i)
+                       i = v.erase(i);
                else
-                       seen.insert(*i++);
+                       seen.insert(j, *i++);
        }
 }