Open CASCADE Technology 7.8.2.dev
NCollection_IndexedMap< TheKeyType, Hasher > Class Template Reference

#include <NCollection_IndexedMap.hxx>

Inheritance diagram for NCollection_IndexedMap< TheKeyType, Hasher >:

Data Structures

class  IndexedMapNode
 Adaptation of the TListNode to the INDEXEDmap. More...
 
class  Iterator
 

Public Types

typedef TheKeyType key_type
 STL-compliant typedef for key type.
 
typedef NCollection_StlIterator< std::forward_iterator_tag, Iterator, TheKeyType, true > const_iterator
 Shorthand for a constant iterator type.
 

Public Member Functions

const_iterator cbegin () const
 Returns a const iterator pointing to the first element in the map.
 
const_iterator cend () const
 Returns a const iterator referring to the past-the-end element in the map.
 
 NCollection_IndexedMap ()
 Empty constructor.
 
 NCollection_IndexedMap (const Standard_Integer theNbBuckets, const Handle< NCollection_BaseAllocator > &theAllocator=0L)
 Constructor.
 
 NCollection_IndexedMap (const NCollection_IndexedMap &theOther)
 Copy constructor.
 
 NCollection_IndexedMap (NCollection_IndexedMap &&theOther) noexcept
 Move constructor.
 
void Exchange (NCollection_IndexedMap &theOther)
 Exchange the content of two maps without re-allocations. Notice that allocators will be swapped as well!
 
NCollection_IndexedMapAssign (const NCollection_IndexedMap &theOther)
 Assign. This method does not change the internal allocator.
 
NCollection_IndexedMapoperator= (const NCollection_IndexedMap &theOther)
 Assignment operator.
 
NCollection_IndexedMapoperator= (NCollection_IndexedMap &&theOther) noexcept
 Move operator.
 
void ReSize (const Standard_Integer theExtent)
 ReSize.
 
Standard_Integer Add (const TheKeyType &theKey1)
 Add.
 
Standard_Integer Add (TheKeyType &&theKey1)
 Add.
 
Standard_Boolean Contains (const TheKeyType &theKey1) const
 Contains.
 
void Substitute (const Standard_Integer theIndex, const TheKeyType &theKey1)
 Substitute.
 
void Swap (const Standard_Integer theIndex1, const Standard_Integer theIndex2)
 Swaps two elements with the given indices.
 
void RemoveLast (void)
 RemoveLast.
 
void RemoveFromIndex (const Standard_Integer theIndex)
 Remove the key of the given index. Caution! The index of the last key can be changed.
 
Standard_Boolean RemoveKey (const TheKeyType &theKey1)
 Remove the given key. Caution! The index of the last key can be changed.
 
const TheKeyType & FindKey (const Standard_Integer theIndex) const
 FindKey.
 
const TheKeyType & operator() (const Standard_Integer theIndex) const
 operator ()
 
Standard_Integer FindIndex (const TheKeyType &theKey1) const
 FindIndex.
 
void Clear (const Standard_Boolean doReleaseMemory=Standard_False)
 Clear data. If doReleaseMemory is false then the table of buckets is not released and will be reused.
 
void Clear (const Handle< NCollection_BaseAllocator > &theAllocator)
 Clear data and reset allocator.
 
virtual ~NCollection_IndexedMap (void)
 Destructor.
 
Standard_Integer Size (void) const
 Size.
 
- Public Member Functions inherited from NCollection_BaseMap
Standard_Integer NbBuckets () const
 NbBuckets.
 
Standard_Integer Extent () const
 Extent.
 
Standard_Boolean IsEmpty () const
 IsEmpty.
 
void Statistics (Standard_OStream &S) const
 Statistics.
 
const Handle< NCollection_BaseAllocator > & Allocator () const
 Returns attached allocator.
 

Protected Member Functions

Standard_Boolean lookup (const TheKeyType &theKey, IndexedMapNode *&theNode, size_t &theHash) const
 Lookup for particular key in map.
 
Standard_Boolean lookup (const TheKeyType &theKey, IndexedMapNode *&theNode) const
 Lookup for particular key in map.
 
bool IsEqual (const TheKeyType &theKey1, const TheKeyType &theKey2) const
 
size_t HashCode (const TheKeyType &theKey, const int theUpperBound) const
 
- Protected Member Functions inherited from NCollection_BaseMap
 NCollection_BaseMap (const Standard_Integer NbBuckets, const Standard_Boolean single, const Handle< NCollection_BaseAllocator > &theAllocator)
 Constructor.
 
 NCollection_BaseMap (NCollection_BaseMap &&theOther) noexcept
 Move Constructor.
 
virtual ~NCollection_BaseMap ()
 Destructor.
 
Standard_Boolean BeginResize (const Standard_Integer NbBuckets, Standard_Integer &NewBuckets, NCollection_ListNode **&data1, NCollection_ListNode **&data2) const
 BeginResize.
 
void EndResize (const Standard_Integer NbBuckets, const Standard_Integer NewBuckets, NCollection_ListNode **data1, NCollection_ListNode **data2)
 EndResize.
 
Standard_Boolean Resizable () const
 Resizable.
 
Standard_Integer Increment ()
 Increment.
 
Standard_Integer Decrement ()
 Decrement.
 
void Destroy (NCollection_DelMapNode fDel, Standard_Boolean doReleaseMemory=Standard_True)
 Destroy.
 
Standard_Integer NextPrimeForMap (const Standard_Integer N) const
 NextPrimeForMap.
 
void exchangeMapsData (NCollection_BaseMap &theOther)
 Exchange content of two maps without data copying.
 
NCollection_BaseMapoperator= (NCollection_BaseMap &&) noexcept=delete
 Move operator.
 
 NCollection_BaseMap (const NCollection_BaseMap &)=delete
 Copy Constructor.
 
NCollection_BaseMapoperator= (const NCollection_BaseMap &)=delete
 Assign operator.
 

Protected Attributes

Hasher myHasher
 
- Protected Attributes inherited from NCollection_BaseMap
Handle< NCollection_BaseAllocatormyAllocator
 
NCollection_ListNode ** myData1
 
NCollection_ListNode ** myData2
 

Detailed Description

template<class TheKeyType, class Hasher = NCollection_DefaultHasher<TheKeyType>>
class NCollection_IndexedMap< TheKeyType, Hasher >

Purpose: An indexed map is used to store keys and to bind an index to them. Each new key stored in the map gets an index. Index are incremented as keys are stored in the map. A key can be found by the index and an index by the key. No key but the last can be removed so the indices are in the range 1..Extent. See the class Map from NCollection for a discussion about the number of buckets.

Member Typedef Documentation

◆ const_iterator

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
NCollection_StlIterator<std::forward_iterator_tag, Iterator, TheKeyType, true> NCollection_IndexedMap< TheKeyType, Hasher >::const_iterator

Shorthand for a constant iterator type.

◆ key_type

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
TheKeyType NCollection_IndexedMap< TheKeyType, Hasher >::key_type

STL-compliant typedef for key type.

Constructor & Destructor Documentation

◆ NCollection_IndexedMap() [1/4]

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
NCollection_IndexedMap< TheKeyType, Hasher >::NCollection_IndexedMap ( )
inline

Empty constructor.

◆ NCollection_IndexedMap() [2/4]

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
NCollection_IndexedMap< TheKeyType, Hasher >::NCollection_IndexedMap ( const Standard_Integer theNbBuckets,
const Handle< NCollection_BaseAllocator > & theAllocator = 0L )
inlineexplicit

Constructor.

◆ NCollection_IndexedMap() [3/4]

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
NCollection_IndexedMap< TheKeyType, Hasher >::NCollection_IndexedMap ( const NCollection_IndexedMap< TheKeyType, Hasher > & theOther)
inline

Copy constructor.

◆ NCollection_IndexedMap() [4/4]

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
NCollection_IndexedMap< TheKeyType, Hasher >::NCollection_IndexedMap ( NCollection_IndexedMap< TheKeyType, Hasher > && theOther)
inlinenoexcept

Move constructor.

◆ ~NCollection_IndexedMap()

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
virtual NCollection_IndexedMap< TheKeyType, Hasher >::~NCollection_IndexedMap ( void )
inlinevirtual

Destructor.

Member Function Documentation

◆ Add() [1/2]

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
Standard_Integer NCollection_IndexedMap< TheKeyType, Hasher >::Add ( const TheKeyType & theKey1)
inline

Add.

◆ Add() [2/2]

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
Standard_Integer NCollection_IndexedMap< TheKeyType, Hasher >::Add ( TheKeyType && theKey1)
inline

Add.

◆ Assign()

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
NCollection_IndexedMap & NCollection_IndexedMap< TheKeyType, Hasher >::Assign ( const NCollection_IndexedMap< TheKeyType, Hasher > & theOther)
inline

Assign. This method does not change the internal allocator.

◆ cbegin()

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
const_iterator NCollection_IndexedMap< TheKeyType, Hasher >::cbegin ( ) const
inline

Returns a const iterator pointing to the first element in the map.

◆ cend()

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
const_iterator NCollection_IndexedMap< TheKeyType, Hasher >::cend ( ) const
inline

Returns a const iterator referring to the past-the-end element in the map.

◆ Clear() [1/2]

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
void NCollection_IndexedMap< TheKeyType, Hasher >::Clear ( const Handle< NCollection_BaseAllocator > & theAllocator)
inline

Clear data and reset allocator.

◆ Clear() [2/2]

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
void NCollection_IndexedMap< TheKeyType, Hasher >::Clear ( const Standard_Boolean doReleaseMemory = Standard_False)
inline

Clear data. If doReleaseMemory is false then the table of buckets is not released and will be reused.

◆ Contains()

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
Standard_Boolean NCollection_IndexedMap< TheKeyType, Hasher >::Contains ( const TheKeyType & theKey1) const
inline

Contains.

◆ Exchange()

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
void NCollection_IndexedMap< TheKeyType, Hasher >::Exchange ( NCollection_IndexedMap< TheKeyType, Hasher > & theOther)
inline

Exchange the content of two maps without re-allocations. Notice that allocators will be swapped as well!

◆ FindIndex()

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
Standard_Integer NCollection_IndexedMap< TheKeyType, Hasher >::FindIndex ( const TheKeyType & theKey1) const
inline

FindIndex.

◆ FindKey()

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
const TheKeyType & NCollection_IndexedMap< TheKeyType, Hasher >::FindKey ( const Standard_Integer theIndex) const
inline

FindKey.

◆ HashCode()

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
size_t NCollection_IndexedMap< TheKeyType, Hasher >::HashCode ( const TheKeyType & theKey,
const int theUpperBound ) const
inlineprotected

◆ IsEqual()

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
bool NCollection_IndexedMap< TheKeyType, Hasher >::IsEqual ( const TheKeyType & theKey1,
const TheKeyType & theKey2 ) const
inlineprotected

◆ lookup() [1/2]

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
Standard_Boolean NCollection_IndexedMap< TheKeyType, Hasher >::lookup ( const TheKeyType & theKey,
IndexedMapNode *& theNode ) const
inlineprotected

Lookup for particular key in map.

Parameters
[in]theKeykey to compute hash
[out]theNodethe detected node with equal key. Can be null.
Returns
true if key is found

◆ lookup() [2/2]

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
Standard_Boolean NCollection_IndexedMap< TheKeyType, Hasher >::lookup ( const TheKeyType & theKey,
IndexedMapNode *& theNode,
size_t & theHash ) const
inlineprotected

Lookup for particular key in map.

Parameters
[in]theKeykey to compute hash
[out]theNodethe detected node with equal key. Can be null.
[out]theHashcomputed bounded hash code for current key.
Returns
true if key is found

◆ operator()()

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
const TheKeyType & NCollection_IndexedMap< TheKeyType, Hasher >::operator() ( const Standard_Integer theIndex) const
inline

operator ()

◆ operator=() [1/2]

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
NCollection_IndexedMap & NCollection_IndexedMap< TheKeyType, Hasher >::operator= ( const NCollection_IndexedMap< TheKeyType, Hasher > & theOther)
inline

Assignment operator.

◆ operator=() [2/2]

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
NCollection_IndexedMap & NCollection_IndexedMap< TheKeyType, Hasher >::operator= ( NCollection_IndexedMap< TheKeyType, Hasher > && theOther)
inlinenoexcept

Move operator.

◆ RemoveFromIndex()

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
void NCollection_IndexedMap< TheKeyType, Hasher >::RemoveFromIndex ( const Standard_Integer theIndex)
inline

Remove the key of the given index. Caution! The index of the last key can be changed.

◆ RemoveKey()

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
Standard_Boolean NCollection_IndexedMap< TheKeyType, Hasher >::RemoveKey ( const TheKeyType & theKey1)
inline

Remove the given key. Caution! The index of the last key can be changed.

◆ RemoveLast()

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
void NCollection_IndexedMap< TheKeyType, Hasher >::RemoveLast ( void )
inline

RemoveLast.

◆ ReSize()

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
void NCollection_IndexedMap< TheKeyType, Hasher >::ReSize ( const Standard_Integer theExtent)
inline

ReSize.

◆ Size()

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
Standard_Integer NCollection_IndexedMap< TheKeyType, Hasher >::Size ( void ) const
inline

Size.

◆ Substitute()

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
void NCollection_IndexedMap< TheKeyType, Hasher >::Substitute ( const Standard_Integer theIndex,
const TheKeyType & theKey1 )
inline

Substitute.

◆ Swap()

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
void NCollection_IndexedMap< TheKeyType, Hasher >::Swap ( const Standard_Integer theIndex1,
const Standard_Integer theIndex2 )
inline

Swaps two elements with the given indices.

Field Documentation

◆ myHasher

template<class TheKeyType , class Hasher = NCollection_DefaultHasher<TheKeyType>>
Hasher NCollection_IndexedMap< TheKeyType, Hasher >::myHasher
protected

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