Sur cette page

QCache Class

template <typename Key, typename T> class QCache

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

En-tête : #include <QCache>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core

Note : Toutes les fonctions de cette classe sont réentrantes.

Fonctions publiques

QCache(qsizetype maxCost = 100)
~QCache()
void clear()
bool contains(const Key &key) const
qsizetype count() const
bool insert(const Key &key, T *object, qsizetype cost = 1)
bool isEmpty() const
QList<Key> keys() const
qsizetype maxCost() const
T *object(const Key &key) const
bool remove(const Key &key)
void setMaxCost(qsizetype cost)
qsizetype size() const
T *take(const Key &key)
qsizetype totalCost() const
T *operator[](const Key &key) const

Description détaillée

QCache<Clé, T> définit un cache qui stocke des objets de type T associés à des clés de type Clé. Par exemple, voici la définition d'un cache qui stocke des objets de type Employé associés à une clé entière :

QCache<int, Employee> cache;

Voici comment insérer un objet dans le cache :

Employee *employee = new Employee;
employee->setId(37);
employee->setName("Richard Schmit");
//...
cache.insert(employee->id(), employee);

L'avantage d'utiliser QCache plutôt qu'une autre structure de données basée sur les clés (telle que QMap ou QHash) est que QCache prend automatiquement possession des objets qui sont insérés dans le cache et les supprime pour faire de la place à de nouveaux objets, si nécessaire. Lors de l'insertion d'un objet dans le cache, vous pouvez spécifier un coût, qui doit avoir une relation approximative avec la quantité de mémoire occupée par l'objet. Lorsque la somme des coûts de tous les objets (totalCost()) dépasse 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 récemment accédés.

Par défaut, la valeur de maxCost() de QCache est de 100. Vous pouvez spécifier une valeur différente dans le constructeur de QCache :

QCache<int, MyDataStructure> cache(5000);

Chaque fois que vous appelez insert(), vous pouvez spécifier un coût comme troisième argument (après la clé et un pointeur sur l'objet à insérer). Après l'appel, l'objet inséré appartient au QCache, qui peut le supprimer à tout moment pour faire de la place à d'autres objets.

Pour rechercher des objets dans le cache, utilisez object() ou operator[](). Cette fonction recherche un objet par sa clé et renvoie soit un pointeur sur l'objet mis en cache (qui appartient au cache), soit nullptr.

Si vous souhaitez supprimer un objet du cache pour une clé particulière, appelez remove(). L'objet sera également supprimé. Si vous souhaitez supprimer un objet du cache sans que le QCache ne le supprime, utilisez take().

Voir aussi QPixmapCache, QHash, et QMap.

Documentation des fonctions membres

[explicit noexcept] QCache::QCache(qsizetype maxCost = 100)

Construit un cache dont le contenu n'aura jamais un coût total supérieur à maxCost.

QCache::~QCache()

Détruit le cache. Supprime tous les objets du cache.

[noexcept(...)] void QCache::clear()

Supprime tous les objets du cache.

Remarque : cette fonction est noexcept lorsque std::is_nothrow_destructible_v<Node> est true.

Voir aussi remove() et take().

[noexcept] bool QCache::contains(const Key &key) const

Renvoie true si le cache contient un objet associé à la clé key; sinon, renvoie false.

Voir aussi take() et remove().

[noexcept] qsizetype QCache::count() const

Identique à size().

bool QCache::insert(const Key &key, T *object, qsizetype cost = 1)

Insère object dans le cache avec la clé key et le coût associé cost. Tout objet ayant la même clé et se trouvant déjà dans le cache sera supprimé.

Après cet appel, object appartient à QCache et peut être supprimé à tout moment. En particulier, si cost est plus grand que maxCost(), l'objet sera supprimé immédiatement.

La fonction renvoie true si l'objet a été inséré dans le cache ; sinon, elle renvoie false.

Voir également take() et remove().

[noexcept] bool QCache::isEmpty() const

Renvoie true si le cache ne contient aucun objet ; sinon, renvoie false.

Voir aussi size().

QList<Key> QCache::keys() const

Renvoie une liste des clés du cache.

[noexcept] qsizetype QCache::maxCost() const

Renvoie le coût total maximum autorisé pour le cache.

Voir aussi setMaxCost() et totalCost().

[noexcept] T *QCache::object(const Key &key) const

Renvoie l'objet associé à la clé key, ou nullptr si la clé n'existe pas dans le cache.

Attention : L'objet retourné appartient à QCache et peut être supprimé à tout moment.

Voir aussi take() et remove().

[noexcept(...)] bool QCache::remove(const Key &key)

Supprime l'objet associé à la clé key. Renvoie true si l'objet a été trouvé dans le cache, sinon renvoie false.

Remarque : cette fonction est noexcept lorsque std::is_nothrow_destructible_v<Node> est true.

Voir aussi take() et clear().

[noexcept(...)] void QCache::setMaxCost(qsizetype cost)

Fixe le coût total maximum autorisé du cache à cost. Si le coût total actuel est supérieur à cost, certains objets sont supprimés immédiatement.

Remarque : cette fonction est noexcept lorsque std::is_nothrow_destructible_v<Node> est true.

Voir également maxCost() et totalCost().

[noexcept] qsizetype QCache::size() const

Renvoie le nombre d'objets dans le cache.

Voir aussi isEmpty().

[noexcept(...)] T *QCache::take(const Key &key)

Retire du cache l'objet associé à la clé key sans le supprimer. Retourne un pointeur sur l'objet retiré, ou 0 si la clé n'existe pas dans le cache.

La propriété de l'objet retourné est transmise à l'appelant.

Remarque : cette fonction est noexcept lorsque std::is_nothrow_destructible_v<Key> est true.

Voir également remove().

[noexcept] qsizetype QCache::totalCost() const

Renvoie 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 XML. Si un objet mis en cache partage ses données internes avec une autre instance, QCache peut conserver l'objet, ce qui peut contribuer à rendre totalCost() plus grand que maxCost().

Voir aussi setMaxCost().

[noexcept] T *QCache::operator[](const Key &key) const

Renvoie l'objet associé à la clé key, ou nullptr si la clé n'existe pas dans le cache.

C'est la même chose que object().

Attention : L'objet retourné appartient à QCache et peut être supprimé à tout moment.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.