Dense is dense and sparse is sparse
This commit is contained in:
parent
5a67a79569
commit
d07dd71078
@ -28,6 +28,7 @@ or see http://www.gnu.org/licenses/agpl.txt.
|
|||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <google/dense_hash_map>
|
#include <google/dense_hash_map>
|
||||||
|
#include <google/sparse_hash_map>
|
||||||
|
|
||||||
template< typename NodeID, typename Key >
|
template< typename NodeID, typename Key >
|
||||||
class ArrayStorage {
|
class ArrayStorage {
|
||||||
@ -70,10 +71,10 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
template< typename NodeID, typename Key >
|
template< typename NodeID, typename Key >
|
||||||
class SparseStorage {
|
class DenseStorage {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
SparseStorage( size_t size = 0 ) { nodes.set_empty_key(UINT_MAX); }
|
DenseStorage( size_t size = 0 ) { nodes.set_empty_key(UINT_MAX); }
|
||||||
|
|
||||||
Key &operator[]( NodeID node ) {
|
Key &operator[]( NodeID node ) {
|
||||||
return nodes[node];
|
return nodes[node];
|
||||||
@ -87,6 +88,25 @@ private:
|
|||||||
google::dense_hash_map< NodeID, Key > nodes;
|
google::dense_hash_map< NodeID, Key > nodes;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template< typename NodeID, typename Key >
|
||||||
|
class SparseStorage {
|
||||||
|
public:
|
||||||
|
|
||||||
|
SparseStorage( size_t size = 0 ) { }
|
||||||
|
|
||||||
|
Key &operator[]( NodeID node ) {
|
||||||
|
return nodes[node];
|
||||||
|
}
|
||||||
|
|
||||||
|
void Clear() {
|
||||||
|
nodes.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
google::sparse_hash_map< NodeID, Key > nodes;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
template < typename NodeID, typename Key, typename Weight, typename Data, typename IndexStorage = ArrayStorage< NodeID, Key > >
|
template < typename NodeID, typename Key, typename Weight, typename Data, typename IndexStorage = ArrayStorage< NodeID, Key > >
|
||||||
class BinaryHeap {
|
class BinaryHeap {
|
||||||
private:
|
private:
|
||||||
|
@ -32,7 +32,7 @@ struct _HeapData {
|
|||||||
_HeapData( NodeID p ) : parent(p) { }
|
_HeapData( NodeID p ) : parent(p) { }
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef BinaryHeap< NodeID, int, int, _HeapData, SparseStorage< NodeID, unsigned > > _Heap;
|
typedef BinaryHeap< NodeID, int, int, _HeapData, DenseStorage< NodeID, unsigned > > _Heap;
|
||||||
|
|
||||||
template<typename EdgeData, typename GraphT, typename KDTST = NodeInformationHelpDesk>
|
template<typename EdgeData, typename GraphT, typename KDTST = NodeInformationHelpDesk>
|
||||||
class SearchEngine {
|
class SearchEngine {
|
||||||
|
Loading…
Reference in New Issue
Block a user