#include "db.h"
#include "io_uring_engine.h"
+#include "unique_sort.h"
#include <algorithm>
#include <chrono>
}
return;
}
- sort(trigrams.begin(), trigrams.end());
- {
- auto last = unique(trigrams.begin(), trigrams.end());
- trigrams.erase(last, trigrams.end());
- }
+ unique_sort(&trigrams);
sort(trigrams.begin(), trigrams.end(),
[&](const pair<Trigram, size_t> &a, const pair<Trigram, size_t> &b) {
return a.first.num_docids < b.first.num_docids;
--- /dev/null
+#ifndef _UNIQUE_SORT_H
+#define _UNIQUE_SORT_H 1
+
+#include <algorithm>
+
+template<class Container, class LessThan = std::less<typename Container::value_type>, class EqualTo = std::equal_to<typename Container::value_type>>
+void unique_sort(Container *c, const LessThan < = LessThan(), const EqualTo &eq = EqualTo())
+{
+ sort(c->begin(), c->end(), lt);
+ auto new_end = unique(c->begin(), c->end(), eq);
+ c->erase(new_end, c->end());
+}
+
+#endif // !defined(_UNIQUE_SORT_H)