summaryrefslogtreecommitdiff
path: root/kernel/hashlib.h
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2015-01-24 00:13:27 +0100
committerClifford Wolf <clifford@clifford.at>2015-01-24 00:13:27 +0100
commit43951099cf46b5a0a25bdebb001685a89dfe6c82 (patch)
treeb95a7ef79401216e1e65b30691b4ecaa2e7491af /kernel/hashlib.h
parent1cb4c925d03de289f37a40b6eceb57ced8dce295 (diff)
Added dict/pool.sort()
Diffstat (limited to 'kernel/hashlib.h')
-rw-r--r--kernel/hashlib.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/kernel/hashlib.h b/kernel/hashlib.h
index 52b38a06..8c977de2 100644
--- a/kernel/hashlib.h
+++ b/kernel/hashlib.h
@@ -457,6 +457,13 @@ public:
return entries[i].udata.second;
}
+ template<typename Compare = std::less<K>>
+ void sort(Compare comp = Compare())
+ {
+ std::sort(entries.begin(), entries.end(), [comp](const entry_t &a, const entry_t &b){ return comp(b.udata.first, a.udata.first); });
+ do_rehash();
+ }
+
void swap(dict &other)
{
hashtable.swap(other.hashtable);
@@ -760,6 +767,13 @@ public:
return i >= 0;
}
+ template<typename Compare = std::less<K>>
+ void sort(Compare comp = Compare())
+ {
+ std::sort(entries.begin(), entries.end(), [comp](const entry_t &a, const entry_t &b){ return comp(b.udata, a.udata); });
+ do_rehash();
+ }
+
void swap(pool &other)
{
hashtable.swap(other.hashtable);