15 #include <unordered_map>
19 #include "../../generic_defs/state_hash_function.h"
44 template<
class node_t>
47 typedef std::unordered_map<StateHash, NodeID, NodeKeyHash> NodeMap;
92 std::size_t
size()
const;
124 template<
class node_t>
129 template<
class node_t>
134 template<
class node_t>
137 assert(nodes.size() == node_map.size());
139 typename NodeMap::const_iterator node_check = node_map.find(hash_value);
141 if(node_check == node_map.end())
144 id = node_check->second;
145 assert(
id < nodes.size());
149 template<
class node_t>
152 nodes.push_back(new_node);
153 node_map[hash_value] = nodes.size() - 1;
155 return nodes.size() - 1;
158 template<
class node_t>
165 template<
class node_t>
168 if(node_id >= nodes.size()) {
172 return nodes[node_id];
175 template<
class node_t>
178 if(node_id >= nodes.size()) {
182 return nodes[node_id];
185 template<
class node_t>
191 template<
class node_t>
194 return getNode(node_id);
197 template<
class node_t>
200 return getNode(node_id);
std::vector< node_t > nodes
A list of the nodes being stored.
Definition: node_table.h:119
uint64_t StateHash
The hash value of a state.
Definition: state_hash_function.h:14
std::size_t operator()(StateHash hash_value) const
Definition: node_table.cpp:12
void clear()
Definition: node_table.h:159
bool isNodeStored(StateHash hash_value, NodeID &id) const
Definition: node_table.h:135
NodeMap node_map
The map used to determine if a hash value is already associated with a node.
Definition: node_table.h:121
Definition: node_table.h:29
NodeID addNewSearchNode(node_t new_node, StateHash hash_value)
Definition: node_table.h:150
virtual ~NodeTable()
Definition: node_table.h:130
NodeTable()
Definition: node_table.h:125
unsigned NodeID
The ID of a node is the location of the node in the node table.
Definition: node_table.h:21
Definition: node_table.h:45
node_t & getNode(NodeID node_id)
Definition: node_table.h:166
std::size_t size() const
Definition: node_table.h:186
node_t & operator[](NodeID node_id)
Definition: node_table.h:192