42#ifndef TEUCHOS_HASHTABLE_H
43#define TEUCHOS_HASHTABLE_H
60 template<
class Key,
class Value>
class HashPair
66 inline HashPair(
const Key& key,
const Value& value)
85 inline Hashtable(
int capacity=101,
double rehashDensity = 0.8);
91 inline const Value&
get(
const Key& key)
const ;
94 inline void put(
const Key& key,
const Value& value);
97 inline void remove(
const Key& key);
115 inline std::string
toString()
const ;
135 template<
class Key,
class Value>
141 template<
class Key,
class Value>
144 template<
class Key,
class Value>
inline
156 template<
class Key,
class Value>
inline
162 for (
int i=0; i<candidates.
length(); i++)
175 template<
class Key,
class Value>
inline
183 for (
int i=0; i<local.
length(); i++)
185 if (local[i].key_ == key)
187 local[i].value_ = value;
209 template<
class Key,
class Value>
inline
214 for (
int i=0; i<
data_.length(); i++)
216 for (
int j=0; j<
data_[i].length(); j++)
227 template<
class Key,
class Value>
inline
233 for (
int i=0; i<
data_.length(); i++)
235 for (
int j=0; j<
data_[i].length(); j++)
243 template<
class Key,
class Value>
inline
250 std::string rtn =
"[";
251 for (
int i=0; i<keys.
length(); i++)
255 if (i < keys.
length()-1) rtn +=
", ";
262 template<
class Key,
class Value>
inline
269 std::string rtn =
"[";
270 for (
int i=0; i<keys.
length(); i++)
274 if (i < keys.
length()-1) rtn +=
", ";
281 template<
class Key,
class Value>
inline
286 "Hashtable<Key, Value>::get: key "
288 <<
" not found in Hashtable"
296 for (
int i=0; i<candidates.
length(); i++)
308 template<
class Key,
class Value>
inline
313 "Hashtable<Key, Value>::remove: key "
315 <<
" not found in Hashtable"
322 for (
int i=0; i<candidates.
length(); i++)
333 template<
class Key,
class Value>
inline
340 template<
class Key,
class Value>
inline
Templated array class derived from the STL std::vector.
Teuchos header file which uses auto-configuration information to include necessary C++ headers.
Utilities for generating hashcodes.
Replacement for std::vector that is compatible with the Teuchos Memory Management classes.
void reserve(size_type n)
int length() const
Return number of elements in the array.
int hashCode(const Array< T > &array)
Return the hash code.
Array< T > & append(const T &x)
Add a new entry at the end of the array.
int size(const Comm< Ordinal > &comm)
Get the number of processes in the communicator.
Helper class for Teuchos::Hashtable, representing a single <key, value> pair.
Key key_
Templated key variable.
HashPair()
Empty constructor.
Value value_
Templated value variable.
HashPair(const Key &key, const Value &value)
Basic <key, value> constructor.
Utilities for generating hashcodes. This is not a true hash ! For all ints and types less than ints i...
static int nextPrime(int newCapacity)
Templated hashtable class.
double density() const
Return the density of the hashtable (num entries / capacity).
std::string toString() const
Write to a std::string.
void setRehashDensity(double rehashDensity)
Set the density at which to do a rehash.
Array< Array< HashPair< Key, Value > > > data_
void accumulateAvgFill(int n) const
const Value & get(const Key &key) const
Get the value indexed by key.
int nextPrime(int newCap) const
void arrayify(Array< Key > &keys, Array< Value > &values) const
Get lists of keys and values in Array form.
int size() const
Get the number of elements in the table.
void put(const Key &key, const Value &value)
Put a new (key, value) pair in the table.
double avgDegeneracy() const
Return the average degeneracy (average number of entries per hash code).
bool containsKey(const Key &key) const
Check for the presence of a key.
Hashtable(int capacity=101, double rehashDensity=0.8)
Create an empty Hashtable.
void remove(const Key &key)
Remove from the table the element given by key.
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
Macro for throwing an exception with breakpointing to ease debugging.
std::ostream & operator<<(std::ostream &os, BigUInt< n > a)
std::string toString(const HashSet< Key > &h)