mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 13:18:28 +00:00
(Ling Li): re-write eliminate_duplicates to avoid initial sort.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@6294 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
ede9561daa
commit
165c7cadf1
@ -1,3 +1,8 @@
|
||||
2003-02-27 Ling Li <ling@caltech.edu>
|
||||
|
||||
* lyxalgo.h (eliminate_duplicates): re-written to avoid the initial
|
||||
sort.
|
||||
|
||||
2003-02-25 Alfredo Braunstein <abraunst@libero.it>
|
||||
|
||||
* forkedcontr.C (timer): remove bogus continue
|
||||
|
@ -17,6 +17,8 @@
|
||||
#include <utility>
|
||||
#include <iterator>
|
||||
#include <algorithm>
|
||||
#include <set>
|
||||
|
||||
|
||||
namespace lyx {
|
||||
|
||||
@ -91,9 +93,16 @@ count (Iterator first, Iterator last, T const & value)
|
||||
template<class C>
|
||||
void eliminate_duplicates(C & c)
|
||||
{
|
||||
std::sort(c.begin(), c.end());
|
||||
typename C::iterator p = std::unique(c.begin(), c.end());
|
||||
c.erase(p, c.end());
|
||||
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);
|
||||
}
|
||||
|
||||
} // namespace lyx
|
||||
|
Loading…
Reference in New Issue
Block a user