# FoundationClasses
TKernel
NCollection

# FoundationClasses
TKernel
NCollection

# NCollection_IndexedDataMap< TheKeyType, TheItemType > Class Template Reference

`#include <NCollection_IndexedDataMap.hxx>`

Inheritance diagram for NCollection_IndexedDataMap< TheKeyType, TheItemType >:

[legend]

## Public Member Functions

| NCollection_IndexedDataMap (const Standard_Integer NbBuckets=1, const Handle(NCollection_BaseAllocator)&theAllocator=0L)
| Constructor.
| NCollection_IndexedDataMap (const NCollection_IndexedDataMap &theOther)
| Copy constructor.
virtual void | Assign (const NCollection_BaseCollection< TheItemType > &theOther)
| Assign another collection.
NCollection_IndexedDataMap & | operator= (const NCollection_IndexedDataMap &theOther)
| = another map
void | ReSize (const Standard_Integer N)
| ReSize.
Standard_Integer | Add (const TheKeyType &theKey1, const TheItemType &theItem)
| Add.
Standard_Boolean | Contains (const TheKeyType &theKey1) const
| Contains.
void | Substitute (const Standard_Integer theIndex, const TheKeyType &theKey1, const TheItemType &theItem)
| Substitute.
void | RemoveLast (void)
| RemoveLast.
const TheKeyType & | FindKey (const Standard_Integer theKey2) const
| FindKey.
const TheItemType & | FindFromIndex (const Standard_Integer theKey2) const
| FindFromIndex.
const TheItemType & | operator() (const Standard_Integer theKey2) const
| operator ()
TheItemType & | ChangeFromIndex (const Standard_Integer theKey2)
| ChangeFromIndex.
TheItemType & | operator() (const Standard_Integer theKey2)
| operator ()
Standard_Integer | FindIndex (const TheKeyType &theKey1) const
| FindIndex.
const TheItemType & | FindFromKey (const TheKeyType &theKey1) const
| FindFromKey.
TheItemType & | ChangeFromKey (const TheKeyType &theKey1)
| ChangeFromKey.
void | Clear (const Standard_Boolean doReleaseMemory=Standard_True)
| 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.
| ~NCollection_IndexedDataMap (void)
| Destructor.
virtual Standard_Integer | Size (void) const
| Size.

## Private Member Functions

virtual TYPENAME NCollection_BaseCollection< TheItemType >::Iterator & | CreateIterator (void) const
| Creates Iterator for use on BaseCollection.

## Data Structures

class | IndexedDataMapNode
| Adaptation of the TListNode to the INDEXEDDatamap. More...
class | Iterator
| Implementation of the Iterator interface. More...

## Detailed Description

### template<class TheKeyType, class TheItemType>
class NCollection_IndexedDataMap< TheKeyType, TheItemType >

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. An Item is stored with each key.

This class is similar to IndexedMap from NCollection with the Item as a new feature. Note the important difference on the operator (). In the IndexedMap this operator returns the Key. In the IndexedDataMap this operator returns the Item.

See the class Map from NCollection for a discussion about the number of buckets.

## Constructor & Destructor Documentation

template<class TheKeyType, class TheItemType>
NCollection_IndexedDataMap< TheKeyType, TheItemType >::NCollection_IndexedDataMap | ( | const Standard_Integer | NbBuckets = `1`,
|  | const Handle(NCollection_BaseAllocator)& | theAllocator = `0L`
| ) | `[inline]`

template<class TheKeyType, class TheItemType>
NCollection_IndexedDataMap< TheKeyType, TheItemType >::NCollection_IndexedDataMap | ( | const NCollection_IndexedDataMap< TheKeyType, TheItemType > & | theOther | ) | `[inline]`

template<class TheKeyType, class TheItemType>
NCollection_IndexedDataMap< TheKeyType, TheItemType >::~NCollection_IndexedDataMap | ( | void |  | ) | `[inline]`

## Member Function Documentation

template<class TheKeyType, class TheItemType>
Standard_Integer NCollection_IndexedDataMap< TheKeyType, TheItemType >::Add | ( | const TheKeyType & | theKey1,
|  | const TheItemType & | theItem
| ) | `[inline]`

template<class TheKeyType, class TheItemType>
virtual void NCollection_IndexedDataMap< TheKeyType, TheItemType >::Assign | ( | const NCollection_BaseCollection< TheItemType > & | theOther | ) | `[inline, virtual]`

template<class TheKeyType, class TheItemType>
TheItemType& NCollection_IndexedDataMap< TheKeyType, TheItemType >::ChangeFromIndex | ( | const Standard_Integer | theKey2 | ) | `[inline]`

template<class TheKeyType, class TheItemType>
TheItemType& NCollection_IndexedDataMap< TheKeyType, TheItemType >::ChangeFromKey | ( | const TheKeyType & | theKey1 | ) | `[inline]`

template<class TheKeyType, class TheItemType>
void NCollection_IndexedDataMap< TheKeyType, TheItemType >::Clear | ( | const Handle(NCollection_BaseAllocator)& | theAllocator | ) | `[inline]`

template<class TheKeyType, class TheItemType>
void NCollection_IndexedDataMap< TheKeyType, TheItemType >::Clear | ( | const Standard_Boolean | doReleaseMemory = `Standard_True` | ) | `[inline]`

template<class TheKeyType, class TheItemType>
Standard_Boolean NCollection_IndexedDataMap< TheKeyType, TheItemType >::Contains | ( | const TheKeyType & | theKey1 | ) | const`[inline]`

template<class TheKeyType, class TheItemType>
virtual TYPENAME NCollection_BaseCollection<TheItemType>::Iterator& NCollection_IndexedDataMap< TheKeyType, TheItemType >::CreateIterator | ( | void |  | ) | const`[inline, private, virtual]`

| Implements NCollection_BaseCollection< TheItemType >.

template<class TheKeyType, class TheItemType>
const TheItemType& NCollection_IndexedDataMap< TheKeyType, TheItemType >::FindFromIndex | ( | const Standard_Integer | theKey2 | ) | const`[inline]`

template<class TheKeyType, class TheItemType>
const TheItemType& NCollection_IndexedDataMap< TheKeyType, TheItemType >::FindFromKey | ( | const TheKeyType & | theKey1 | ) | const`[inline]`

template<class TheKeyType, class TheItemType>
Standard_Integer NCollection_IndexedDataMap< TheKeyType, TheItemType >::FindIndex | ( | const TheKeyType & | theKey1 | ) | const`[inline]`

template<class TheKeyType, class TheItemType>
const TheKeyType& NCollection_IndexedDataMap< TheKeyType, TheItemType >::FindKey | ( | const Standard_Integer | theKey2 | ) | const`[inline]`

template<class TheKeyType, class TheItemType>
TheItemType& NCollection_IndexedDataMap< TheKeyType, TheItemType >::operator() | ( | const Standard_Integer | theKey2 | ) | `[inline]`

template<class TheKeyType, class TheItemType>
const TheItemType& NCollection_IndexedDataMap< TheKeyType, TheItemType >::operator() | ( | const Standard_Integer | theKey2 | ) | const`[inline]`

template<class TheKeyType, class TheItemType>
NCollection_IndexedDataMap& NCollection_IndexedDataMap< TheKeyType, TheItemType >::operator= | ( | const NCollection_IndexedDataMap< TheKeyType, TheItemType > & | theOther | ) | `[inline]`

template<class TheKeyType, class TheItemType>
void NCollection_IndexedDataMap< TheKeyType, TheItemType >::RemoveLast | ( | void |  | ) | `[inline]`

template<class TheKeyType, class TheItemType>
void NCollection_IndexedDataMap< TheKeyType, TheItemType >::ReSize | ( | const Standard_Integer | N | ) | `[inline]`

template<class TheKeyType, class TheItemType>
virtual Standard_Integer NCollection_IndexedDataMap< TheKeyType, TheItemType >::Size | ( | void |  | ) | const`[inline, virtual]`

| Implements NCollection_BaseCollection< TheItemType >.

template<class TheKeyType, class TheItemType>
void NCollection_IndexedDataMap< TheKeyType, TheItemType >::Substitute | ( | const Standard_Integer | theIndex,
|  | const TheKeyType & | theKey1,
|  | const TheItemType & | theItem
| ) | `[inline]`

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

- NCollection_IndexedDataMap.hxx