La classe QCache est un modèle qui fournit un cache. Plus d'informations...
#include <QCache>
La classe QCache est un modèle qui fournit un cache.
QCache<Cle, T>
définit un cache qui stocke des objets de type T
, associés à des clés de type Cle
. Par exemple, voici la définition d’un cache qui stocke des objets de type Employe
, associés à une clé entière.
QCache<int, Employe> cache;
Voici la manière d’insérer un objet dans le cache.
Employe *employe = new Employe; employe->setId(37); employe->setName("Richard Schmit"); ... cache.insert(employe->id(), employe);
L’avantage de l’utilisation de cette classe par rapport aux structures basées sur des clés (comme QMap ou QHash) est que QCache prend possession automatiquement des objets qui y sont insérés et les supprime pour faire de la place, si nécessaire. À l’insertion d’un objet dans le cache, vous pouvez spécifier un coût, ce qui devrait avoir un lien avec la quantité de mémoire utilisée par l’objet. Quand la somme des coûts de tous les objets (totalCost()) excède la limite du cache (maxCost()), QCache commence à supprimer des objets dans le cache pour rester en dessous de la limite, en commençant par les objets les moins utilisés.
Par défaut, maxCost() vaut 100. Vous pouvez spécifier une valeur différente dans le constructeur.
QCache<int, MyDataStructure> cache(5000);
À chaque appel de insert(), vous pouvez spécifier un coût en troisième argument (après la clé et un pointeur vers l’objet à insérer). Après l’appel, l’objet inséré appartiendra à QCache, qui pourra le supprimer à tout moment.
Pour regarder les objets dans le cache, utilisez object() ou operator[](). Cette fonction permet de retrouver un objet par sa clé et retourne, soit un pointeur vers l’objet en cache (détenu par lui) soit 0.
Si vous voulez supprimer un objet du cache, appelez remove(). Ceci supprimera aussi l’objet. Si vous voulez supprimer un objet du cache sans qu’il soit supprimé, appelez take().
Voir aussi QPixmapCache, QHash et QMap.
QCache::QCache ( int maxCost = 100 )
Construit un cache dont le contenu ne dépassera jamais un coût plus grand que maxCost
.
QCache::~QCache ()
Détruit le cache, ainsi que tous les objets du cache.
bool QCache::contains ( const Key & key ) const
Retourne true
si le cache contient un objet associé avec la clé key
; sinon, retourne false.
int QCache::count () const
Comme size().
bool QCache::insert ( const Key & key, T * object, int cost= 1 )
Insère object
dans le cache avec la clé key
et le coût cost
. Tout objet ayant la même clé dans le cache sera supprimé.
Après cet appel, object
est propriété de QCache et peut être supprimé à n’importe quel moment. En particulier, si cost
est supérieur à maxCost(), l’objet sera supprimé immédiatement.
Cette fonction retourne true
si l’objet a été inséré dans le cache, sinon elle retourne false.
bool QCache::isEmpty () const
Retourne true
si le cache ne contient aucun objet, false
sinon.
Voir aussi size().
QList<Key> QCache::keys () const
Retourne une liste des clés du cache.
int QCache::maxCost () const
Retourne le coût maximal autorisé dans le cache.
Voir aussi setMaxCost() et totalCost().
T * QCache::object ( const Key & key) const
Retourne l’objet associé à la clé key
ou 0 si la clé n’existe pas dans le cache.
Attention : L’objet retourné est possédé par QCache et peut être supprimé à n’importe quel moment.
bool QCache::remove ( const Key & key)
Supprime l’objet associé à la clé key
. Retourne true
si l’objet a été trouvé dans le cache ; sinon, false.
void QCache::setMaxCost ( int cost)
Autorise un coût maximal de cost
. Si le coût total actuel est plus grand que cost
nouvellement autorisé, des objets seront supprimés automatiquement.
Voir aussi maxCost() et totalCost().
T * QCache::take ( const Key & key)
Prend l’objet associé à la clé key
hors du cache sans le supprimer. Retourne un pointeur vers cet objet ou 0 si la clé n’existe pas dans le cache.
La propriété de l’objet retourné est passée à l’appelant.
Voir aussi remove().
int QCache::totalCost () const
Retourne le coût total des objets dans le cache.
Cette valeur est normalement inférieure à maxCost(), mais QCache fait une exception pour les classes implicitement partagées de Qt. Si un objet caché partage ses données internes avec une autre instance, QCache peut garder l’objet, en rendant possiblement totalCost() plus grand que maxCost().
Voir aussi setMaxCost().
T * QCache::operator[] ( const Key & key) const
Retourne un objet associé à la clé key
ou 0 si la clé n’existe pas dans le cache.
Ceci équivaut à object().
Attention : L’objet retourné est possédé par QCache et peut être supprimé à tout moment.
Merci à <!dourouc!> pour la traduction et à <!jacques_jean!> pour la relecture !
Copyright © 2025 Developpez LLC Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.