Viadeo Twitter Google Bookmarks ! Facebook Digg del.icio.us MySpace Yahoo MyWeb Blinklist Netvouz Reddit Simpy StumbleUpon Bookmarks Windows Live Favorites 
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Toutes les fonctions  ·  Vues d'ensemble  · 

QCache

La classe QCache est un modèle qui fournit un cache. Plus d'informations...

#include <QCache>

Description détaillée

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.

Fonctions membres

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.

void QCache::clear ()

Supprime tous les objets dans le cache.

Voir aussi remove() et take().

bool QCache::contains ( const Key & key ) const

Retourne true si le cache contient un objet associé avec la clé key ; sinon, retourne false.

Voir aussi take() et remove().

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.

Voir aussi take() et remove().

isEmpty

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.

Voir aussi take() et remove().

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.

Voir aussi take() et clear().

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().

int QCache::size () const

Retourne le nombre d'objets dans le cache.

Voir aussi isEmpty().

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.

Remerciements

Merci à Thibaut Cuvelier pour la traduction et à Jacques Thery pour la relecture !

Publicité

Best Of

Actualités les plus lues

Semaine
Mois
Année
  1. « Quelque chose ne va vraiment pas avec les développeurs "modernes" », un développeur à "l'ancienne" critique la multiplication des bibliothèques 94
  2. Apercevoir la troisième dimension ou l'utilisation multithreadée d'OpenGL dans Qt, un article des Qt Quarterly traduit par Guillaume Belz 0
  3. Les développeurs ignorent-ils trop les failles découvertes dans leur code ? Prenez-vous en compte les remarques des autres ? 17
  4. Pourquoi les programmeurs sont-ils moins payés que les gestionnaires de programmes ? Manquent-ils de pouvoir de négociation ? 42
  5. Quelles nouveautés de C++11 Visual C++ doit-il rapidement intégrer ? Donnez-nous votre avis 10
  6. Adieu qmake, bienvenue qbs : Qt Building Suite, un outil déclaratif et extensible pour la compilation de projets Qt 17
  7. 2017 : un quinquennat pour une nouvelle version du C++ ? Possible, selon Herb Sutter 9
Page suivante

Le blog Digia au hasard

Logo

Créer des applications avec un style Metro avec Qt, exemples en QML et C++, un article de Digia Qt traduit par Thibaut Cuvelier

Le blog Digia est l'endroit privilégié pour la communication sur l'édition commerciale de Qt, où des réponses publiques sont apportées aux questions les plus posées au support. Lire l'article.

Communauté

Ressources

Liens utiles

Contact

  • Vous souhaitez rejoindre la rédaction ou proposer un tutoriel, une traduction, une question... ? Postez dans le forum Contribuez ou contactez-nous par MP ou par email (voir en bas de page).

Qt dans le magazine

Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia. Qt 4.6
Copyright © 2012 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Vous avez déniché une erreur ? Un bug ? Une redirection cassée ? Ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter ou par MP !
 
 
 
 
Partenaires

Hébergement Web