![]() |
Open CASCADE Technology Reference Manual 8.0.0
|
#include <NCollection_Map.hxx>

Data Structures | |
| class | Iterator |
| Implementation of the Iterator interface. More... | |
| class | MapNode |
| Adaptation of the TListNode to the map notations. More... | |
Public Types | |
| typedef TheKeyType | key_type |
| STL-compliant typedef for key type. | |
| typedef Hasher | hasher |
| typedef NCollection_StlIterator< std::forward_iterator_tag, Iterator, TheKeyType, true > | const_iterator |
| Shorthand for a constant iterator type. | |
| typedef const_iterator | iterator |
| Shorthand for iterator type (same as const_iterator for key-only maps). | |
Public Member Functions | |
| iterator | begin () const noexcept |
| Returns an iterator pointing to the first element in the map. | |
| iterator | end () const noexcept |
| Returns an iterator referring to the past-the-end element in the map. | |
| const_iterator | cbegin () const noexcept |
| Returns a const iterator pointing to the first element in the map. | |
| const_iterator | cend () const noexcept |
| Returns a const iterator referring to the past-the-end element in the map. | |
| NCollection_Map () | |
| Empty constructor. | |
| NCollection_Map (const size_t theNbBuckets, const occ::handle< NCollection_BaseAllocator > &theAllocator=nullptr) | |
| Constructor. | |
| NCollection_Map (const int theNbBuckets, const occ::handle< NCollection_BaseAllocator > &theAllocator=nullptr) | |
| Constructor (legacy int-taking). | |
| NCollection_Map (const Hasher &theHasher, const size_t theNbBuckets=1, const occ::handle< NCollection_BaseAllocator > &theAllocator=nullptr) | |
| Constructor with custom hasher (copy). | |
| NCollection_Map (const Hasher &theHasher, const int theNbBuckets, const occ::handle< NCollection_BaseAllocator > &theAllocator=nullptr) | |
| Constructor with custom hasher (copy, legacy int-taking). | |
| NCollection_Map (Hasher &&theHasher, const size_t theNbBuckets=1, const occ::handle< NCollection_BaseAllocator > &theAllocator=nullptr) | |
| Constructor with custom hasher (move). | |
| NCollection_Map (Hasher &&theHasher, const int theNbBuckets, const occ::handle< NCollection_BaseAllocator > &theAllocator=nullptr) | |
| Constructor with custom hasher (move, legacy int-taking). | |
| NCollection_Map (const NCollection_Map &theOther) | |
| Copy constructor. | |
| NCollection_Map (NCollection_Map &&theOther) noexcept | |
| Move constructor. | |
| void | Exchange (NCollection_Map &theOther) noexcept |
| Exchange the content of two maps without re-allocations. Notice that allocators will be swapped as well! | |
| const Hasher & | GetHasher () const noexcept |
| Returns const reference to the hasher. | |
| NCollection_Map & | Assign (const NCollection_Map &theOther) |
| Assign. This method does not change the internal allocator. | |
| NCollection_Map & | operator= (const NCollection_Map &theOther) |
| Assign operator. | |
| NCollection_Map & | operator= (NCollection_Map &&theOther) noexcept |
| Move operator. | |
| void | ReSize (const size_t N) |
| ReSize. | |
| void | ReSize (const int N) |
| bool | Add (const TheKeyType &theKey) |
| Add. | |
| bool | Add (TheKeyType &&theKey) |
| Add. | |
| const TheKeyType & | Added (const TheKeyType &theKey) |
| Added: add a new key if not yet in the map, and return reference to either newly added or previously existing object. | |
| const TheKeyType & | Added (TheKeyType &&theKey) |
| Added: add a new key if not yet in the map, and return reference to either newly added or previously existing object. | |
| template<typename... Args> | |
| bool | Emplace (Args &&... theArgs) |
| Emplace constructs key in-place; if key exists, destroys and reconstructs. | |
| template<typename... Args> | |
| const TheKeyType & | Emplaced (Args &&... theArgs) |
| Emplaced constructs key in-place; if key exists, destroys and reconstructs. | |
| template<typename... Args> | |
| bool | TryEmplace (Args &&... theArgs) |
| TryEmplace constructs key in-place only if not already present. | |
| template<typename... Args> | |
| const TheKeyType & | TryEmplaced (Args &&... theArgs) |
| TryEmplaced constructs key in-place only if not already present. | |
| bool | Contains (const TheKeyType &theKey) const |
| Contains. | |
| std::optional< std::reference_wrapper< const TheKeyType > > | Contained (const TheKeyType &theKey) const |
| Contained returns optional const reference to the key in the map. Returns std::nullopt if the key is not found. | |
| bool | Remove (const TheKeyType &K) |
| Remove. | |
| void | Clear (const bool doReleaseMemory=false) |
| Clear data. If doReleaseMemory is false then the table of buckets is not released and will be reused. | |
| void | Clear (const occ::handle< NCollection_BaseAllocator > &theAllocator) |
| Clear data and reset allocator. | |
| ~NCollection_Map () override | |
| Destructor. | |
| NCollection_MapAlgo hxx instead bool | IsEqual (const NCollection_Map &theOther) const |
| Checks if two maps contain exactly the same keys. This function compares the keys of this map and another map and returns true if they contain exactly the same keys. | |
| NCollection_MapAlgo hxx instead bool | Contains (const NCollection_Map &theOther) const |
| Checks if this map contains all keys of another map. This function checks if this map contains all keys of another map. | |
| NCollection_MapAlgo hxx instead void | Union (const NCollection_Map &theLeft, const NCollection_Map &theRight) |
| Sets this Map to be the result of union (aka addition, fuse, merge, boolean OR) operation between two given Maps The new Map contains the values that are contained either in the first map or in the second map or in both. All previous content of this Map is cleared. This map (result of the boolean operation) can also be passed as one of operands. | |
| NCollection_MapAlgo hxx instead bool | Unite (const NCollection_Map &theOther) |
| Apply to this Map the boolean operation union (aka addition, fuse, merge, boolean OR) with another (given) Map. The result contains the values that were previously contained in this map or contained in the given (operand) map. This algorithm is similar to method Union(). Returns True if contents of this map is changed. | |
| NCollection_MapAlgo hxx instead bool | HasIntersection (const NCollection_Map &theMap) const |
| Returns true if this and theMap have common elements. | |
| NCollection_MapAlgo hxx instead void | Intersection (const NCollection_Map &theLeft, const NCollection_Map &theRight) |
| Sets this Map to be the result of intersection (aka multiplication, common, boolean AND) operation between two given Maps. The new Map contains only the values that are contained in both map operands. All previous content of this Map is cleared. This same map (result of the boolean operation) can also be used as one of operands. | |
| NCollection_MapAlgo hxx instead bool | Intersect (const NCollection_Map &theOther) |
| Apply to this Map the intersection operation (aka multiplication, common, boolean AND) with another (given) Map. The result contains only the values that are contained in both this and the given maps. This algorithm is similar to method Intersection(). Returns True if contents of this map is changed. | |
| NCollection_MapAlgo hxx instead void | Subtraction (const NCollection_Map &theLeft, const NCollection_Map &theRight) |
| Sets this Map to be the result of subtraction (aka set-theoretic difference, relative complement, exclude, cut, boolean NOT) operation between two given Maps. The new Map contains only the values that are contained in the first map operands and not contained in the second one. All previous content of this Map is cleared. | |
| NCollection_MapAlgo hxx instead bool | Subtract (const NCollection_Map &theOther) |
| Apply to this Map the subtraction (aka set-theoretic difference, relative complement, exclude, cut, boolean NOT) operation with another (given) Map. The result contains only the values that were previously contained in this map and not contained in this map. This algorithm is similar to method Subtract() with two operands. Returns True if contents of this map is changed. | |
| NCollection_MapAlgo hxx instead void | Difference (const NCollection_Map &theLeft, const NCollection_Map &theRight) |
| Sets this Map to be the result of symmetric difference (aka exclusive disjunction, boolean XOR) operation between two given Maps. The new Map contains the values that are contained only in the first or the second operand maps but not in both. All previous content of this Map is cleared. This map (result of the boolean operation) can also be used as one of operands. | |
| NCollection_MapAlgo hxx instead bool | Differ (const NCollection_Map &theOther) |
| Apply to this Map the symmetric difference (aka exclusive disjunction, boolean XOR) operation with another (given) Map. The result contains the values that are contained only in this or the operand map, but not in both. This algorithm is similar to method Difference(). Returns True if contents of this map is changed. | |
Public Member Functions inherited from NCollection_BaseMap | |
| size_t | NbBuckets () const noexcept |
| NbBuckets. | |
| int | Extent () const noexcept |
| Extent (number of elements, legacy int-returning API). | |
| int | Length () const noexcept |
| Length - number of elements (legacy int-returning API, synonym of Extent()). | |
| size_t | Size () const noexcept |
| Size - number of elements. | |
| bool | IsEmpty () const noexcept |
| IsEmpty. | |
| const occ::handle< NCollection_BaseAllocator > & | Allocator () const noexcept |
| Returns attached allocator. | |
Protected Member Functions | |
| bool | lookup (const TheKeyType &theKey, MapNode *&theNode, size_t &theHash) const |
| Lookup for particular key in map. | |
| bool | lookup (const TheKeyType &theKey, MapNode *&theNode) const |
| Lookup for particular key in map. | |
| bool | IsEqual (const TheKeyType &theKey1, const TheKeyType &theKey2) const |
| size_t | HashCode (const TheKeyType &theKey, const size_t theUpperBound) const |
| template<typename K , bool ReturnRef> | |
| auto | addImpl (K &&theKey, std::bool_constant< ReturnRef >) -> std::conditional_t< ReturnRef, const TheKeyType &, bool > |
| Implementation helper for Add/Added. | |
| template<bool IsTry, bool ReturnRef, typename... Args> | |
| auto | emplaceImpl (std::bool_constant< IsTry >, std::bool_constant< ReturnRef >, Args &&... theArgs) -> std::conditional_t< ReturnRef, const TheKeyType &, bool > |
| Implementation helper for Emplace/TryEmplace/Emplaced/TryEmplaced. | |
Protected Member Functions inherited from NCollection_BaseMap | |
| NCollection_BaseMap (const size_t theNbBuckets, const bool single, const occ::handle< NCollection_BaseAllocator > &theAllocator) | |
| Constructor. | |
| NCollection_BaseMap (NCollection_BaseMap &&theOther) noexcept | |
| Move Constructor. | |
| virtual | ~NCollection_BaseMap ()=default |
| Destructor. | |
| bool | BeginResize (const size_t theExtent, size_t &theNewBuckets, NCollection_ListNode **&data1, NCollection_ListNode **&data2) const |
| BeginResize. | |
| void | EndResize (const size_t theExtent, const size_t theNewBuckets, NCollection_ListNode **data1, NCollection_ListNode **data2) noexcept |
| EndResize. | |
| bool | Resizable () const noexcept |
| Resizable. | |
| size_t | Increment () noexcept |
| Increment. | |
| size_t | Decrement () noexcept |
| Decrement. | |
| void | Destroy (NCollection_DelMapNode fDel, bool doReleaseMemory=true) |
| Destroy. | |
| size_t | NextPrimeForMap (const size_t N) const noexcept |
| NextPrimeForMap. | |
| void | exchangeMapsData (NCollection_BaseMap &theOther) noexcept |
| Exchange content of two maps without data copying. | |
| NCollection_BaseMap & | operator= (NCollection_BaseMap &&) noexcept=delete |
| Move operator. | |
| NCollection_BaseMap (const NCollection_BaseMap &)=delete | |
| Copy Constructor. | |
| NCollection_BaseMap & | operator= (const NCollection_BaseMap &)=delete |
| Assign operator. | |
Protected Attributes | |
| Hasher | myHasher |
Protected Attributes inherited from NCollection_BaseMap | |
| occ::handle< NCollection_BaseAllocator > | myAllocator |
| NCollection_ListNode ** | myData1 |
| NCollection_ListNode ** | myData2 |
Additional Inherited Members | |
Static Protected Member Functions inherited from NCollection_BaseMap | |
| static size_t | NbBucketsFromInt (const int theNbBuckets) |
| Converts legacy int bucket count to size_t with validation. | |
Purpose: Single hashed Map. This Map is used to store and retrieve keys in linear time.
The ::Iterator class can be used to explore the content of the map. It is not wise to iterate and modify a map in parallel.
To compute the hashcode of the key the function HashCode must be defined in the global namespace
To compare two keys the function IsEqual must be defined in the global namespace.
The performance of a Map is conditioned by its number of buckets that should be kept greater to the number of keys. This map has an automatic management of the number of buckets. It is resized when the number of Keys becomes greater than the number of buckets.
If you have a fair idea of the number of objects you can save on automatic resizing by giving a number of buckets at creation or using the ReSize method. This should be consider only for crucial optimisation issues.
| typedef NCollection_StlIterator<std::forward_iterator_tag, Iterator, TheKeyType, true> NCollection_Map< TheKeyType, Hasher >::const_iterator |
Shorthand for a constant iterator type.
| typedef Hasher NCollection_Map< TheKeyType, Hasher >::hasher |
| typedef const_iterator NCollection_Map< TheKeyType, Hasher >::iterator |
Shorthand for iterator type (same as const_iterator for key-only maps).
| typedef TheKeyType NCollection_Map< TheKeyType, Hasher >::key_type |
STL-compliant typedef for key type.
|
inline |
Empty constructor.
|
inlineexplicit |
Constructor.
|
inlineexplicit |
Constructor (legacy int-taking).
|
inlineexplicit |
Constructor with custom hasher (copy).
| theHasher | custom hasher instance |
| theNbBuckets | initial number of buckets |
| theAllocator | custom memory allocator |
|
inlineexplicit |
Constructor with custom hasher (copy, legacy int-taking).
|
inlineexplicit |
Constructor with custom hasher (move).
| theHasher | custom hasher instance (moved) |
| theNbBuckets | initial number of buckets |
| theAllocator | custom memory allocator |
|
inlineexplicit |
Constructor with custom hasher (move, legacy int-taking).
|
inline |
Copy constructor.
|
inlinenoexcept |
Move constructor.
|
inlineoverride |
Destructor.
|
inline |
Add.
|
inline |
Add.
|
inline |
Added: add a new key if not yet in the map, and return reference to either newly added or previously existing object.
|
inline |
Added: add a new key if not yet in the map, and return reference to either newly added or previously existing object.
|
inlineprotected |
Implementation helper for Add/Added.
| K | forwarding reference type for key |
| ReturnRef | if true, returns const reference to key; if false, returns bool |
| theKey | key to add |
|
inline |
Assign. This method does not change the internal allocator.
|
inlinenoexcept |
Returns an iterator pointing to the first element in the map.
|
inlinenoexcept |
Returns a const iterator pointing to the first element in the map.
|
inlinenoexcept |
Returns a const iterator referring to the past-the-end element in the map.
|
inline |
Clear data. If doReleaseMemory is false then the table of buckets is not released and will be reused.
|
inline |
Clear data and reset allocator.
|
inline |
Contained returns optional const reference to the key in the map. Returns std::nullopt if the key is not found.
|
inline |
Checks if this map contains all keys of another map. This function checks if this map contains all keys of another map.
|
inline |
Contains.
|
inline |
Apply to this Map the symmetric difference (aka exclusive disjunction, boolean XOR) operation with another (given) Map. The result contains the values that are contained only in this or the operand map, but not in both. This algorithm is similar to method Difference(). Returns True if contents of this map is changed.
|
inline |
Sets this Map to be the result of symmetric difference (aka exclusive disjunction, boolean XOR) operation between two given Maps. The new Map contains the values that are contained only in the first or the second operand maps but not in both. All previous content of this Map is cleared. This map (result of the boolean operation) can also be used as one of operands.
|
inline |
Emplace constructs key in-place; if key exists, destroys and reconstructs.
| theArgs | arguments forwarded to key constructor |
|
inline |
Emplaced constructs key in-place; if key exists, destroys and reconstructs.
| theArgs | arguments forwarded to key constructor |
|
inlineprotected |
Implementation helper for Emplace/TryEmplace/Emplaced/TryEmplaced.
| IsTry | if true, does not modify existing; if false, destroys and reconstructs |
| ReturnRef | if true, returns const reference to key; if false, returns bool |
| theArgs | arguments forwarded to key constructor |
|
inlinenoexcept |
Returns an iterator referring to the past-the-end element in the map.
|
inlinenoexcept |
Exchange the content of two maps without re-allocations. Notice that allocators will be swapped as well!
|
inlinenoexcept |
Returns const reference to the hasher.
|
inlineprotected |
|
inline |
Returns true if this and theMap have common elements.
|
inline |
Apply to this Map the intersection operation (aka multiplication, common, boolean AND) with another (given) Map. The result contains only the values that are contained in both this and the given maps. This algorithm is similar to method Intersection(). Returns True if contents of this map is changed.
|
inline |
Sets this Map to be the result of intersection (aka multiplication, common, boolean AND) operation between two given Maps. The new Map contains only the values that are contained in both map operands. All previous content of this Map is cleared. This same map (result of the boolean operation) can also be used as one of operands.
|
inline |
Checks if two maps contain exactly the same keys. This function compares the keys of this map and another map and returns true if they contain exactly the same keys.
|
inlineprotected |
|
inlineprotected |
Lookup for particular key in map.
| [in] | theKey | key to compute hash |
| [out] | theNode | the detected node with equal key. Can be null. |
|
inlineprotected |
Lookup for particular key in map.
| [in] | theKey | key to compute hash |
| [out] | theNode | the detected node with equal key. Can be null. |
| [out] | theHash | computed bounded hash code for current key. |
|
inline |
Assign operator.
|
inlinenoexcept |
Move operator.
|
inline |
Remove.
|
inline |
|
inline |
ReSize.
|
inline |
Apply to this Map the subtraction (aka set-theoretic difference, relative complement, exclude, cut, boolean NOT) operation with another (given) Map. The result contains only the values that were previously contained in this map and not contained in this map. This algorithm is similar to method Subtract() with two operands. Returns True if contents of this map is changed.
|
inline |
Sets this Map to be the result of subtraction (aka set-theoretic difference, relative complement, exclude, cut, boolean NOT) operation between two given Maps. The new Map contains only the values that are contained in the first map operands and not contained in the second one. All previous content of this Map is cleared.
|
inline |
TryEmplace constructs key in-place only if not already present.
| theArgs | arguments forwarded to key constructor |
|
inline |
TryEmplaced constructs key in-place only if not already present.
| theArgs | arguments forwarded to key constructor |
|
inline |
Sets this Map to be the result of union (aka addition, fuse, merge, boolean OR) operation between two given Maps The new Map contains the values that are contained either in the first map or in the second map or in both. All previous content of this Map is cleared. This map (result of the boolean operation) can also be passed as one of operands.
|
inline |
Apply to this Map the boolean operation union (aka addition, fuse, merge, boolean OR) with another (given) Map. The result contains the values that were previously contained in this map or contained in the given (operand) map. This algorithm is similar to method Union(). Returns True if contents of this map is changed.
|
protected |