IOSS 2.0

Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Friends | List of all members
tsl::detail_robin_hash::robin_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy >::robin_iterator< IsConst > Class Template Reference

`#include <robin_hash.h>`

## Public Types
using | iterator_category = std::forward_iterator_tag
using | value_type = const typename robin_hash::value_type
using | difference_type = std::ptrdiff_t
using | reference = value_type &
using | pointer = value_type *

## Public Member Functions
| robin_iterator () noexcept
template<bool TIsConst = IsConst, typename std::enable_if< TIsConst >::type * = nullptr>
| robin_iterator (const robin_iterator<!TIsConst > &other) noexcept
| robin_iterator (const robin_iterator &other)=default
| robin_iterator (robin_iterator &&other)=default
robin_iterator & | operator= (const robin_iterator &other)=default
robin_iterator & | operator= (robin_iterator &&other)=default
const robin_hash::key_type & | key () const
template<class U = ValueSelect, typename std::enable_if< has_mapped_type< U >::value &&IsConst >::type * = nullptr>
const U::value_type & | value () const
template<class U = ValueSelect, typename std::enable_if< has_mapped_type< U >::value &&!IsConst >::type * = nullptr>
U::value_type & | value ()
reference | operator* () const
pointer | operator-> () const
robin_iterator & | operator++ ()
robin_iterator | operator++ (int)

## Private Types
using | bucket_entry_ptr = typename std::conditional< IsConst, const bucket_entry *, bucket_entry * >::type

## Private Member Functions
| robin_iterator (bucket_entry_ptr bucket) noexcept

## Private Attributes
bucket_entry_ptr | m_bucket

## Friends
class | robin_hash
bool | operator== (const robin_iterator &lhs, const robin_iterator &rhs)
bool | operator!= (const robin_iterator &lhs, const robin_iterator &rhs)

## Detailed Description

### template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>
class tsl::detail_robin_hash::robin_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy >::robin_iterator< IsConst >

The 'operator*()' and 'operator->()' methods return a const reference and const pointer respectively to the stored value type.

In case of a map, to get a mutable reference to the value associated to a key (the '.second' in the stored pair), you have to call 'value()'.

The main reason for this is that if we returned a `std::pair<Key, T>&` instead of a `const std::pair<Key, T>&`, the user may modify the key which will put the map in a undefined state.

## Member Typedef Documentation

## ◆ bucket_entry_ptr

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>

using tsl::detail_robin_hash::robin_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy >::robin_iterator< IsConst >::bucket_entry_ptr = typename std::conditional<IsConst, const bucket_entry *, bucket_entry *>::type
| private

## ◆ difference_type

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>

using tsl::detail_robin_hash::robin_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy >::robin_iterator< IsConst >::difference_type = std::ptrdiff_t

## ◆ iterator_category

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>

using tsl::detail_robin_hash::robin_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy >::robin_iterator< IsConst >::iterator_category = std::forward_iterator_tag

## ◆ pointer

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>

using tsl::detail_robin_hash::robin_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy >::robin_iterator< IsConst >::pointer = value_type *

## ◆ reference

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>

using tsl::detail_robin_hash::robin_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy >::robin_iterator< IsConst >::reference = value_type &

## ◆ value_type

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>

using tsl::detail_robin_hash::robin_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy >::robin_iterator< IsConst >::value_type = const typename robin_hash::value_type

## Constructor & Destructor Documentation

## ◆ robin_iterator() [1/5]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>

tsl::detail_robin_hash::robin_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy >::robin_iterator< IsConst >::robin_iterator | ( | bucket_entry_ptr | bucket | ) |
| inlineexplicitprivatenoexcept

## ◆ robin_iterator() [2/5]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>

tsl::detail_robin_hash::robin_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy >::robin_iterator< IsConst >::robin_iterator | ( |  | ) |
| inlinenoexcept

## ◆ robin_iterator() [3/5]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>
template<bool TIsConst = IsConst, typename std::enable_if< TIsConst >::type * = nullptr>

tsl::detail_robin_hash::robin_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy >::robin_iterator< IsConst >::robin_iterator | ( | const robin_iterator<!TIsConst > & | other | ) |
| inlinenoexcept

## ◆ robin_iterator() [4/5]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>

tsl::detail_robin_hash::robin_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy >::robin_iterator< IsConst >::robin_iterator | ( | const robin_iterator< IsConst > & | other | ) |
| default

## ◆ robin_iterator() [5/5]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>

tsl::detail_robin_hash::robin_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy >::robin_iterator< IsConst >::robin_iterator | ( | robin_iterator< IsConst > && | other | ) |
| default

## Member Function Documentation

## ◆ key()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>

const robin_hash::key_type& tsl::detail_robin_hash::robin_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy >::robin_iterator< IsConst >::key | ( |  | ) | const
| inline

## ◆ operator*()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>

reference tsl::detail_robin_hash::robin_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy >::robin_iterator< IsConst >::operator* | ( |  | ) | const
| inline

## ◆ operator++() [1/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>

robin_iterator& tsl::detail_robin_hash::robin_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy >::robin_iterator< IsConst >::operator++ | ( |  | ) |
| inline

## ◆ operator++() [2/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>

robin_iterator tsl::detail_robin_hash::robin_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy >::robin_iterator< IsConst >::operator++ | ( | int |  | ) |
| inline

## ◆ operator->()

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>

pointer tsl::detail_robin_hash::robin_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy >::robin_iterator< IsConst >::operator-> | ( |  | ) | const
| inline

## ◆ operator=() [1/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>

robin_iterator& tsl::detail_robin_hash::robin_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy >::robin_iterator< IsConst >::operator= | ( | const robin_iterator< IsConst > & | other | ) |
| default

## ◆ operator=() [2/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>

robin_iterator& tsl::detail_robin_hash::robin_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy >::robin_iterator< IsConst >::operator= | ( | robin_iterator< IsConst > && | other | ) |
| default

## ◆ value() [1/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>
template<class U = ValueSelect, typename std::enable_if< has_mapped_type< U >::value &&!IsConst >::type * = nullptr>

U::value_type& tsl::detail_robin_hash::robin_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy >::robin_iterator< IsConst >::value | ( |  | ) |
| inline

## ◆ value() [2/2]

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>
template<class U = ValueSelect, typename std::enable_if< has_mapped_type< U >::value &&IsConst >::type * = nullptr>

const U::value_type& tsl::detail_robin_hash::robin_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy >::robin_iterator< IsConst >::value | ( |  | ) | const
| inline

## Friends And Related Function Documentation

## ◆ operator!=

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>

bool operator!= | ( | const robin_iterator< IsConst > & | lhs,
|  | const robin_iterator< IsConst > & | rhs
| ) |  |
| friend

## ◆ operator==

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>

bool operator== | ( | const robin_iterator< IsConst > & | lhs,
|  | const robin_iterator< IsConst > & | rhs
| ) |  |
| friend

## ◆ robin_hash

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>

friend class robin_hash
| friend

## Member Data Documentation

## ◆ m_bucket

template<class ValueType, class KeySelect, class ValueSelect, class Hash, class KeyEqual, class Allocator, bool StoreHash, class GrowthPolicy>
template<bool IsConst>

bucket_entry_ptr tsl::detail_robin_hash::robin_hash< ValueType, KeySelect, ValueSelect, Hash, KeyEqual, Allocator, StoreHash, GrowthPolicy >::robin_iterator< IsConst >::m_bucket
| private

The documentation for this class was generated from the following file:

- src/hash/robin_hash.h