Table de hachage pour tableaux associatifs. Plus de détails...
#include <arcane/utils/HashTableMap.h>
Classes | |
| struct | Data |
Types publics | |
| typedef KeyTraitsType::KeyTypeConstRef | KeyTypeConstRef |
| typedef KeyTraitsType::KeyTypeValue | KeyTypeValue |
| typedef KeyTraitsType::Printable | Printable |
| typedef KeyTraitsType::HashValueType | HashValueType |
| typedef HashTableMapT< KeyType, ValueType, KeyTraitsType > | ThatClass |
| typedef HashTableMapEnumeratorT< KeyType, ValueType > | Enumerator |
Fonctions membres publiques | |
| HashTableMapT (Integer table_size, bool use_prime) | |
| Crée une table de taille table_size. | |
| HashTableMapT (Integer table_size, bool use_prime, Integer buffer_size) | |
| Crée une table de taille table_size. | |
| ThatClass & | operator= (const ThatClass &from) |
| Opérateur de recopie. | |
| bool | hasKey (KeyTypeConstRef id) |
| true si une valeur avec la clé id est présente | |
| void | clear () |
| Supprime tous les éléments de la table. | |
| Data * | lookup (KeyTypeConstRef id) |
| Recherche la valeur correspondant à la clé id. | |
| const Data * | lookup (KeyTypeConstRef id) const |
| Recherche la valeur correspondant à la clé id. | |
| ValueType & | lookupValue (KeyTypeConstRef id) |
| Recherche la valeur correspondant à la clé id. | |
| ValueType & | operator[] (KeyTypeConstRef id) |
| Recherche la valeur correspondant à la clé id. | |
| const ValueType & | lookupValue (KeyTypeConstRef id) const |
| Recherche la valeur correspondant à la clé id. | |
| const ValueType & | operator[] (KeyTypeConstRef id) const |
| Recherche la valeur correspondant à la clé id. | |
| bool | add (KeyTypeConstRef id, const ValueType &value) |
| Ajoute la valeur value correspondant à la clé id. | |
| void | remove (KeyTypeConstRef id) |
| Supprime la valeur associée à la clé id. | |
| Data * | lookupAdd (KeyTypeConstRef id, const ValueType &value, bool &is_add) |
| Recherche ou ajoute la valeur correspondant à la clé id. | |
| Data * | lookupAdd (KeyTypeConstRef id) |
| Recherche ou ajoute la valeur correspondant à la clé id. | |
| void | nocheckAdd (KeyTypeConstRef id, const ValueType &value) |
| Ajoute la valeur value correspondant à la clé id. | |
| ArrayView< Data * > | buckets () |
| ConstArrayView< Data * > | buckets () const |
| void | resize (Integer new_size, bool use_prime=false) |
| Redimensionne la table de hachage. | |
| void | rehash () |
| Repositionne les données après changement de valeur des clés. | |
| template<class Lambda> | |
| void | each (const Lambda &lambda) |
| Applique le fonctor f à tous les éléments de la collection. | |
| template<class Lambda> | |
| void | eachValue (const Lambda &lambda) |
| Applique le fonctor f à tous les éléments de la collection et utilise x->value() (de type ValueType) comme argument. | |
| Fonctions membres publiques hérités de Arcane::HashTableBase | |
| HashTableBase (Integer table_size, bool use_prime) | |
| Crée une table de taille table_size. | |
| Integer | nearestPrimeNumber (Integer n) |
| Retourne le nombre premier le plus proche de n par excès. Le nombre premier le plus proche et supérieur à n est renvoyé en utilisant une table de nombre premier déterminée à l'avance. | |
| Integer | count () const |
| Nombre d'éléments dans la table. | |
Attributs publics | |
| Int64 | m_nb_collision = 0 |
| Int64 | m_nb_direct = 0 |
Fonctions membres privées | |
| void | _rehash (Integer new_size) |
| Repositionne les données après changement de valeur des clés. | |
| Data * | _add (Integer bucket, KeyTypeConstRef key, const ValueType &value) |
| HashValueType | _applyHash (KeyTypeConstRef id) const |
| Integer | _keyToBucket (KeyTypeConstRef id) const |
| Integer | _hashValueToBucket (KeyTypeValue id) const |
| Data * | _baseLookupBucket (Integer bucket, KeyTypeConstRef id) const |
| Data * | _baseRemoveBucket (Integer bucket, KeyTypeConstRef id) |
| Data * | _baseLookup (KeyTypeConstRef id) const |
| Data * | _baseRemove (KeyTypeConstRef id) |
| void | _baseAdd (Integer bucket, KeyTypeConstRef id, Data *hd) |
| Data * | _lookup (KeyTypeConstRef id) |
| const Data * | _lookup (KeyTypeConstRef id) const |
| Data * | _lookupBucket (Integer bucket, KeyTypeConstRef id) const |
| Data * | _removeBucket (Integer bucket, KeyTypeConstRef id) |
| void | _checkResize () |
| void | _print (FalseType) |
| void | _print (TrueType) |
| void _throwNotFound | ARCANE_NORETURN (KeyTypeConstRef, FalseType) const |
| void _throwNotFound | ARCANE_NORETURN (KeyTypeConstRef id, TrueType) const |
| void | _computeMaxCount () |
Attributs privés | |
| MultiBufferT< Data > * | m_buffer = nullptr |
| Tampon d'allocation des valeurs. | |
| Data * | m_first_free = nullptr |
| Pointeur vers le premier Data utilisable. | |
| Integer | m_max_count = 0 |
| Nombre maximal d'élément avant retaillage. | |
| UniqueArray< Data * > | m_buckets |
Membres hérités additionnels | |
| Fonctions membres protégées hérités de Arcane::HashTableBase | |
| void _throwNotFound | ARCANE_NORETURN () const |
| Attributs protégés hérités de Arcane::HashTableBase | |
| Integer | m_count |
| Nombre d'éléments. | |
| Integer | m_nb_bucket |
| Nombre de buckets. | |
Table de hachage pour tableaux associatifs.
Cette table permet de stocker une valeur en fonction d'une clé. La clé est de type KeyType et la valeur ValueType.
Cette table permet pour l'instant uniquement d'ajouter des valeurs. La mémoire associée à chaque entrée du tableau est gérée par un MultiBufferT.
Il est possible de spécifier une fonction de hachage différente de la fonction par défaut en spécifiant le troisième paramètre template KeyTraitsType.
Pour des raisons de performance, il est préférable que la taille de la table (buckets) soit un nombre premier.
Définition à la ligne 54 du fichier HashTableMap.h.
| typedef HashTableMapEnumeratorT<KeyType, ValueType> Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::Enumerator |
Définition à la ligne 64 du fichier HashTableMap.h.
| typedef KeyTraitsType::HashValueType Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::HashValueType |
Définition à la ligne 62 du fichier HashTableMap.h.
| typedef KeyTraitsType::KeyTypeConstRef Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::KeyTypeConstRef |
Définition à la ligne 59 du fichier HashTableMap.h.
| typedef KeyTraitsType::KeyTypeValue Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::KeyTypeValue |
Définition à la ligne 60 du fichier HashTableMap.h.
| typedef KeyTraitsType::Printable Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::Printable |
Définition à la ligne 61 du fichier HashTableMap.h.
| typedef HashTableMapT<KeyType, ValueType, KeyTraitsType> Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::ThatClass |
Définition à la ligne 63 du fichier HashTableMap.h.
|
inline |
Crée une table de taille table_size.
Si use_prime est vrai, utilise la fonction nearestPrimeNumber() pour avoir une taille de taille qui est un nombre premier.
Définition à la ligne 110 du fichier HashTableMap.h.
|
inline |
Crée une table de taille table_size.
Si use_prime est vrai, utilise la fonction nearestPrimeNumber() pour avoir une taille de taille qui est un nombre premier.
Définition à la ligne 128 du fichier HashTableMap.h.
|
inline |
Définition à la ligne 140 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 452 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 466 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 527 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 517 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 482 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 522 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 495 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 556 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 607 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 477 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 472 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 536 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 541 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 546 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 582 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 586 du fichier HashTableMap.h.
|
inlineprivate |
Repositionne les données après changement de valeur des clés.
Définition à la ligne 414 du fichier HashTableMap.h.
Référencé par Arcane::HashTableMapT< VariableNameInfo, IVariable *, VNIComparer >::rehash(), et Arcane::HashTableMapT< VariableNameInfo, IVariable *, VNIComparer >::resize().
|
inlineprivate |
Définition à la ligne 551 du fichier HashTableMap.h.
|
inline |
Ajoute la valeur value correspondant à la clé id.
Si une valeur correspondant à id existe déjà, elle est remplacée.
| true | si la clé est ajoutée |
| false | si la clé existe déjà et est remplacée |
Définition à la ligne 264 du fichier HashTableMap.h.
Référencé par Arcane::mesh::FaceUniqueIdBuilder::_computeFacesUniqueIdsParallelV1(), Arcane::mesh::TiedInterfaceBuilder::_gatherFaces(), Arcane::LimaMalippReaderT< ReaderWrapper >::_readMeshPart(), Arcane::mesh::ItemFamily::checkUniqueIds(), et Arcane::mesh::Parallel3EdgeUniqueIdBuilder::compute().
|
inlineprivate |
Définition à la ligne 600 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 595 du fichier HashTableMap.h.
|
inline |
Définition à la ligne 351 du fichier HashTableMap.h.
|
inline |
Définition à la ligne 356 du fichier HashTableMap.h.
|
inline |
Supprime tous les éléments de la table.
Définition à la ligne 182 du fichier HashTableMap.h.
Référencé par Arcane::HashTableMapT< VariableNameInfo, IVariable *, VNIComparer >::resize().
|
inline |
Applique le fonctor f à tous les éléments de la collection.
Définition à la ligne 386 du fichier HashTableMap.h.
|
inline |
Applique le fonctor f à tous les éléments de la collection et utilise x->value() (de type ValueType) comme argument.
Définition à la ligne 401 du fichier HashTableMap.h.
Référencé par Arcane::mesh::Parallel3EdgeUniqueIdBuilder::compute().
|
inline |
true si une valeur avec la clé id est présente
Définition à la ligne 171 du fichier HashTableMap.h.
Référencé par Arcane::mesh::FaceUniqueIdBuilder::_computeFacesUniqueIdsParallelV1(), Arcane::mesh::ParallelAMRConsistency::_gatherFaces(), Arcane::mesh::TiedInterfaceBuilder::_gatherFaces(), et Arcane::mesh::ParallelAMRConsistency::_gatherItems().
|
inline |
Recherche la valeur correspondant à la clé id.
Définition à la ligne 193 du fichier HashTableMap.h.
Référencé par Arcane::ItemFamilyVariableSerializer::_serializePartialVariable(), et Arcane::mesh::ItemFamily::checkUniqueIds().
|
inline |
Recherche la valeur correspondant à la clé id.
Définition à la ligne 203 du fichier HashTableMap.h.
|
inline |
Recherche ou ajoute la valeur correspondant à la clé id.
Si la clé id est déjà dans la table, retourne une référence sur cette valeur et positionne is_add à false. Sinon, ajoute la clé id avec pour valeur ValueType() (qui doit exister).
La structure retournée n'est jamais nul et peut être conservée car elle ne change pas d'adresse tant que cette instance de la table de hachage existe
Définition à la ligne 324 du fichier HashTableMap.h.
|
inline |
Recherche ou ajoute la valeur correspondant à la clé id.
Si la clé id est déjà dans la table, retourne une référence sur cette valeur et positionne is_add à false. Sinon, ajoute la clé id avec pour valeur value et positionne is_add à true.
La structure retournée n'est jamais nul et peut être conservée car elle ne change pas d'adresse tant que cette instance de la table de hachage existe
Définition à la ligne 298 du fichier HashTableMap.h.
Référencé par Arcane::mesh::FaceUniqueIdBuilder::_computeFacesUniqueIdsParallelV2(), et Arcane::mesh::GhostLayerBuilder::addGhostChildFromParent().
|
inline |
Recherche la valeur correspondant à la clé id.
Une exception est générée si la valeur n'est pas trouvé.
Définition à la ligne 213 du fichier HashTableMap.h.
Référencé par Arcane::LimaMalippReaderT< ReaderWrapper >::_readMeshPart(), Arcane::HashTableMapT< VariableNameInfo, IVariable *, VNIComparer >::operator[](), et Arcane::HashTableMapT< VariableNameInfo, IVariable *, VNIComparer >::operator[]().
|
inline |
Recherche la valeur correspondant à la clé id.
Une exception est générée si la valeur n'est pas trouvé.
Définition à la ligne 237 du fichier HashTableMap.h.
|
inline |
Ajoute la valeur value correspondant à la clé id.
Si une valeur correspondant à id existe déjà, le résultat est indéfini.
Définition à la ligne 344 du fichier HashTableMap.h.
Référencé par Arcane::ItemFamilyVariableSerializer::_serializePartialVariable(), et Arcane::XmfMeshReader::readMeshFromFile().
|
inline |
Opérateur de recopie.
Définition à la ligne 146 du fichier HashTableMap.h.
|
inline |
Recherche la valeur correspondant à la clé id.
Une exception est générée si la valeur n'est pas trouvé.
Définition à la ligne 227 du fichier HashTableMap.h.
|
inline |
Recherche la valeur correspondant à la clé id.
Une exception est générée si la valeur n'est pas trouvé.
Définition à la ligne 251 du fichier HashTableMap.h.
|
inline |
Repositionne les données après changement de valeur des clés.
Définition à la ligne 377 du fichier HashTableMap.h.
|
inline |
Supprime la valeur associée à la clé id.
Définition à la ligne 280 du fichier HashTableMap.h.
|
inline |
Redimensionne la table de hachage.
Définition à la ligne 362 du fichier HashTableMap.h.
|
private |
Définition à la ligne 616 du fichier HashTableMap.h.
|
private |
Tampon d'allocation des valeurs.
Définition à la ligne 442 du fichier HashTableMap.h.
|
private |
Pointeur vers le premier Data utilisable.
Définition à la ligne 443 du fichier HashTableMap.h.
|
private |
Nombre maximal d'élément avant retaillage.
Définition à la ligne 615 du fichier HashTableMap.h.
|
mutable |
Définition à la ligne 447 du fichier HashTableMap.h.
|
mutable |
Définition à la ligne 448 du fichier HashTableMap.h.