X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbuildinfo.cpp;h=43e1427df6a1cc3cea3a6ae1cd1acec6129d2ac5;hb=aa053d637e8259755af7d2e4b510a242f4d29c7b;hp=29254489cf5e6c4b8e747e2ad59cd554492c1a0f;hpb=9f885c3eec8f065b7dc400acfb9dd67158284fcf;p=builder.git diff --git a/source/buildinfo.cpp b/source/buildinfo.cpp index 2925448..43e1427 100644 --- a/source/buildinfo.cpp +++ b/source/buildinfo.cpp @@ -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 -void unique(list &l) +void unique(vector &v) { - set seen; - for(auto i=l.begin(); i!=l.end(); ) + vector 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++); } }