Template Class HashMap

Inheritance Relationships

Base Type

Class Documentation

template<typename HandleT, typename ValueT>
class HashMap : public lvr2::AttributeMap<HandleT, ValueT>

Public Functions

inline HashMap()

Creates an empty map without default element set.

HashMap(const ValueT &defaultValue)

Creates a map with a given default value.

Whenever you request a value for a key and there isn’t a value associated with that key, the default value is returned. Note that if you set a default value (which you do by calling this constructor), you can’t remove it. Neither erase() nor clear() will do it. Calls to get() will always return a non-none value and operator[] won’t ever panic.

One additional important detail: if you call get() to obtain a mutable reference, the default value is inserted into the map. This is the only sane way to return a mutably reference.

HashMap(size_t countElements, const ValueT &defaultValue)

Creates a map with a given default value and calls reserve.

This works exactly as the HashMap(const Value&) constructor, but also calls reserve(countElements) immediately afterwards.

virtual bool containsKey(HandleT key) const final

Returns true iff the map contains a value associated with the given key.

virtual boost::optional<ValueT> insert(HandleT key, const ValueT &value) final

Inserts the given value at the given key position.

Returns:

If there was a value associated with the given key before inserting the new value, the old value is returned. None otherwise.

virtual boost::optional<ValueT> erase(HandleT key) final

Removes the value associated with the given key.

Returns:

If there was a value associated with the key, it is returned. None otherwise.

virtual void clear() final

Removes all values from the map.

virtual boost::optional<ValueT&> get(HandleT key) final

Returns the value associated with the given key or None if there is no associated value.

Note: this method can not be used to insert a new value. It only allows reading and modifying an already inserted value.

virtual boost::optional<const ValueT&> get(HandleT key) const final

Returns the value associated with the given key or None if there is no associated value.

Note: this method can not be used to insert a new value. It only allows reading an already inserted value.

virtual size_t numValues() const final

Returns the number of values in this map.

virtual AttributeMapHandleIteratorPtr<HandleT> begin() const final

Returns an iterator over all keys of this map. The order of iteration is unspecified.

You can simply iterate over all keys of this map with a range-based for-loop:

for (auto handle: attributeMap) { ... }
virtual AttributeMapHandleIteratorPtr<HandleT> end() const final

Returns an iterator to the end of all keys.

void reserve(size_t newCap)

Allocates space for at least newCap more elements.