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 |
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 52 du fichier HashTableMap.h.
typedef HashTableMapEnumeratorT<KeyType, ValueType> Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::Enumerator |
Définition à la ligne 62 du fichier HashTableMap.h.
typedef KeyTraitsType::HashValueType Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::HashValueType |
Définition à la ligne 60 du fichier HashTableMap.h.
typedef KeyTraitsType::KeyTypeConstRef Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::KeyTypeConstRef |
Définition à la ligne 57 du fichier HashTableMap.h.
typedef KeyTraitsType::KeyTypeValue Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::KeyTypeValue |
Définition à la ligne 58 du fichier HashTableMap.h.
typedef KeyTraitsType::Printable Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::Printable |
Définition à la ligne 59 du fichier HashTableMap.h.
typedef HashTableMapT<KeyType, ValueType, KeyTraitsType> Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::ThatClass |
Définition à la ligne 61 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 108 du fichier HashTableMap.h.
Références Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::m_buffer, et Arcane::HashTableBase::m_nb_bucket.
|
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 126 du fichier HashTableMap.h.
Références Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::m_buffer, et Arcane::HashTableBase::m_nb_bucket.
|
inline |
Définition à la ligne 138 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 450 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 464 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 525 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 515 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 480 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 520 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 493 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 554 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 605 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 475 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 470 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 534 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 539 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 544 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 580 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 584 du fichier HashTableMap.h.
|
inlineprivate |
Repositionne les données après changement de valeur des clés.
Définition à la ligne 412 du fichier HashTableMap.h.
Références Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::m_buffer, Arcane::HashTableBase::m_count, Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::m_first_free, et Arcane::HashTableBase::m_nb_bucket.
Référencé par Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::rehash(), et Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::resize().
|
inlineprivate |
Définition à la ligne 549 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 262 du fichier HashTableMap.h.
Référencé par Arcane::mesh::TiedInterfaceBuilder::_gatherFaces(), Arcane::VariableMng::addVariable(), et Arcane::mesh::ParallelAMRConsistency::makeNewItemsConsistent().
|
inlineprivate |
Définition à la ligne 598 du fichier HashTableMap.h.
|
inlineprivate |
Définition à la ligne 593 du fichier HashTableMap.h.
|
inline |
Définition à la ligne 349 du fichier HashTableMap.h.
|
inline |
Définition à la ligne 354 du fichier HashTableMap.h.
|
inline |
Supprime tous les éléments de la table.
Définition à la ligne 180 du fichier HashTableMap.h.
Références Arcane::HashTableBase::m_count.
Référencé par Arcane::mesh::ParallelAMRConsistency::makeNewItemsConsistent(), et Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::resize().
|
inline |
Applique le fonctor f à tous les éléments de la collection.
Définition à la ligne 384 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 399 du fichier HashTableMap.h.
|
inline |
true si une valeur avec la clé id est présente
Définition à la ligne 169 du fichier HashTableMap.h.
|
inline |
Recherche la valeur correspondant à la clé id.
Définition à la ligne 191 du fichier HashTableMap.h.
Référencé par Arcane::mesh::TiedInterfaceBuilder::_computeMasterInterface(), Arcane::mesh::TiedInterfaceBuilder::_gatherAllNodesInfo(), et Arcane::VariableMng::checkVariable().
|
inline |
Recherche la valeur correspondant à la clé id.
Définition à la ligne 201 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 322 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 296 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 211 du fichier HashTableMap.h.
Référencé par Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::operator[](), et Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::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 235 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 342 du fichier HashTableMap.h.
|
inline |
Opérateur de recopie.
Définition à la ligne 144 du fichier HashTableMap.h.
Références Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::m_buffer, Arcane::HashTableBase::m_count, Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::m_first_free, et Arcane::HashTableBase::m_nb_bucket.
|
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 225 du fichier HashTableMap.h.
Références Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::lookupValue().
|
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 249 du fichier HashTableMap.h.
Références Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::lookupValue().
|
inline |
Repositionne les données après changement de valeur des clés.
Définition à la ligne 375 du fichier HashTableMap.h.
Références Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::_rehash(), et Arcane::HashTableBase::m_nb_bucket.
|
inline |
Supprime la valeur associée à la clé id.
Définition à la ligne 278 du fichier HashTableMap.h.
Références Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::m_first_free.
Référencé par Arcane::VariableMng::removeVariable().
|
inline |
Redimensionne la table de hachage.
Définition à la ligne 360 du fichier HashTableMap.h.
Références Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::_rehash(), Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::clear(), Arcane::HashTableBase::m_nb_bucket, et Arcane::HashTableBase::nearestPrimeNumber().
Référencé par Arcane::mesh::TiedInterfaceBuilder::_computeMasterInterface(), Arcane::mesh::ParallelAMRConsistency::makeNewItemsConsistent(), et Arcane::mesh::ParallelAMRConsistency::makeNewItemsConsistent2().
|
private |
Définition à la ligne 614 du fichier HashTableMap.h.
|
private |
Tampon d'allocation des valeurs.
Définition à la ligne 440 du fichier HashTableMap.h.
Référencé par Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::_rehash(), Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::HashTableMapT(), Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::HashTableMapT(), et Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::operator=().
|
private |
Pointeur vers le premier Data utilisable.
Définition à la ligne 441 du fichier HashTableMap.h.
Référencé par Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::_rehash(), Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::operator=(), et Arcane::HashTableMapT< KeyType, ValueType, KeyTraitsType >::remove().
|
private |
Nombre maximal d'élément avant retaillage.
Définition à la ligne 613 du fichier HashTableMap.h.
|
mutable |
Définition à la ligne 445 du fichier HashTableMap.h.
|
mutable |
Définition à la ligne 446 du fichier HashTableMap.h.