EHS
HashMap.h
Go to the documentation of this file.
1
/*
2
#pragma once
3
4
#include "EHS.h"
5
6
#include <type_traits>
7
8
namespace ehs
9
{
10
template<typename V>
11
class HashNode
12
{
13
private:
14
V value;
15
HashNode child;
16
17
public:
18
HashNode()
19
{
20
}
21
22
HashNode(const V value)
23
: value(value)
24
{
25
}
26
27
HashNode(const HashNode& node)
28
: value(node.value), child(node.child)
29
{
30
}
31
32
HashNode& operator==(const HashNode& node)
33
{
34
value = node.value;
35
child = node.child;
36
37
return *this;
38
}
39
40
void SetValue(const V value)
41
{
42
this->value = value;
43
}
44
45
V GetValue() const
46
{
47
return value;
48
}
49
50
void SetChild(const HashNode child)
51
{
52
this->child = child;
53
}
54
55
HashNode* GetChild()
56
{
57
return &child;
58
}
59
};
60
62
template<typename V, typename N = USize>
63
class HashMap
64
{
65
private:
66
HashNode<V>** data;
67
N size;
68
69
public:
70
~HashMap()
71
{
72
if (data)
73
{
74
delete[] data;
75
data = nullptr;
76
size = 0;
77
}
78
}
79
80
HashMap()
81
: data(nullptr), size(0)
82
{
83
}
84
85
HashMap(const N size)
86
: data(new HashNode<V>(size)), size(size)
87
{
88
}
89
90
HashMap(const HashMap& map)
91
: data(new HashNode<V>*(map.size)), size(map.size)
92
{
93
for (N i = 0; i < map.size; ++i)
94
data[i] = map.data[i];
95
}
96
97
HashMap& operator=(const HashMap& map)
98
{
99
if (this == &map)
100
return *this;
101
102
data = new HashNode<V>*(map.size);
103
size = map.size;
104
105
for (N i = 0; i < size; ++i)
106
data[i] = map.data[i];
107
108
return *this;
109
}
110
111
template<typename K>
112
void Insert(const K key, const V value)
113
{
114
115
}
116
117
template<>
118
void Insert(const Str_8& key, const V value)
119
{
120
N hash = 0;
121
122
for (N i = 0; i < key.Size(); ++i)
123
hash += key[i];
124
125
hash %= size;
126
127
if (data[hash])
128
{
129
HashNode<V> child = data[hash]->GetChild();
130
if (child)
131
132
}
133
else
134
{
135
data[hash] = new HashNode<V>(value);
136
}
137
}
138
139
private:
140
SetChildRecursive()
141
{
142
143
}
144
};
145
}
146
*/
include
ehs
HashMap.h
Generated by
1.9.4