forked from OctaForge/libostd
hash initializer list and range ctors
This commit is contained in:
parent
8ce2e67e36
commit
13e553f85c
30
octa/map.h
30
octa/map.h
|
@ -10,6 +10,7 @@
|
||||||
#include "octa/utility.h"
|
#include "octa/utility.h"
|
||||||
#include "octa/memory.h"
|
#include "octa/memory.h"
|
||||||
#include "octa/functional.h"
|
#include "octa/functional.h"
|
||||||
|
#include "octa/initializer_list.h"
|
||||||
|
|
||||||
#include "octa/internal/hashtable.h"
|
#include "octa/internal/hashtable.h"
|
||||||
|
|
||||||
|
@ -67,13 +68,38 @@ public:
|
||||||
explicit Map(octa::Size size, const H &hf = H(), const C &eqf = C(),
|
explicit Map(octa::Size size, const H &hf = H(), const C &eqf = C(),
|
||||||
const A &alloc = A()): p_table(size, hf, eqf, alloc) {}
|
const A &alloc = A()): p_table(size, hf, eqf, alloc) {}
|
||||||
|
|
||||||
Map(): Map(1 << 10) {}
|
Map(): Map(octa::Size(1 << 10)) {}
|
||||||
explicit Map(const A &alloc): Map(1 << 10, H(), C(), alloc) {}
|
explicit Map(const A &alloc): Map(octa::Size(1 << 10), H(), C(), alloc) {}
|
||||||
|
|
||||||
Map(octa::Size size, const A &alloc): Map(size, H(), C(), alloc) {}
|
Map(octa::Size size, const A &alloc): Map(size, H(), C(), alloc) {}
|
||||||
Map(octa::Size size, const H &hf, const A &alloc): Map(size, hf, C(),
|
Map(octa::Size size, const H &hf, const A &alloc): Map(size, hf, C(),
|
||||||
alloc) {}
|
alloc) {}
|
||||||
|
|
||||||
|
template<typename R>
|
||||||
|
Map(R range, octa::Size size = 1 << 10, const H &hf = H(), const C &eqf = C(),
|
||||||
|
const A &alloc = A()): p_table(size, hf, eqf, alloc) {
|
||||||
|
for (; !range.empty(); range.pop_front())
|
||||||
|
emplace(range.front());
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename R>
|
||||||
|
Map(R range, octa::Size size, const A &alloc): Map(range, size, H(), C(),
|
||||||
|
alloc) {}
|
||||||
|
|
||||||
|
template<typename R>
|
||||||
|
Map(R range, octa::Size size, const H &hf, const A &alloc):
|
||||||
|
Map(range, size, hf, C(), alloc) {}
|
||||||
|
|
||||||
|
Map(octa::InitializerList<Value> init, octa::Size size = 1 << 10,
|
||||||
|
const H &hf = H(), const C &eqf = C(), const A &alloc = A()):
|
||||||
|
Map(octa::each(init), size, hf, eqf, alloc) {}
|
||||||
|
|
||||||
|
Map(octa::InitializerList<Value> init, octa::Size size, const A &alloc):
|
||||||
|
Map(octa::each(init), size, H(), C(), alloc) {}
|
||||||
|
|
||||||
|
Map(octa::InitializerList<Value> init, octa::Size size, const H &hf,
|
||||||
|
const A &alloc): Map(octa::each(init), size, hf, C(), alloc) {}
|
||||||
|
|
||||||
bool empty() const { return p_table.empty(); }
|
bool empty() const { return p_table.empty(); }
|
||||||
octa::Size size() const { return p_table.size(); }
|
octa::Size size() const { return p_table.size(); }
|
||||||
octa::Size max_size() const { return p_table.max_size(); }
|
octa::Size max_size() const { return p_table.max_size(); }
|
||||||
|
|
Loading…
Reference in a new issue