QCache Class
template <typename Key, typename T> class QCacheLa classe QCache est une classe modèle qui fournit un cache. En savoir plus...
| En-tête : | #include <QCache> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
- Liste de tous les membres, y compris les membres hérités
- QCache fait partie des classes à partage implicite.
Remarque : 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<Key, T> définit un cache qui stocke des objets de type T associés à des clés de type Key. Par exemple, voici la définition d'un cache qui stocke des objets de type Employee associés à une clé de type entier :
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 des clés (telle que QMap ou QHash) réside dans le fait que QCache prend automatiquement possession des objets 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 être approximativement proportionnel à 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 du cache pour rester en dessous de cette limite, en commençant par les objets les moins récemment consulté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 en tant que troisième argument (après la clé et le pointeur vers l’objet à insérer). Après l’appel, l’objet inséré appartient à 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 l’opérateur `[]()`. Cette fonction recherche un objet par sa clé et renvoie soit un pointeur vers l’objet mis en cache (qui appartient au cache), soit ` nullptr`.
Si vous souhaitez supprimer un objet du cache pour une clé donnée, appelez ` remove()`. Cela supprimera également l’objet. Si vous souhaitez retirer un objet du cache sans que le QCache ne le supprime, utilisez ` take()`.
Voir également QPixmapCache, QHash et QMap.
Documentation des fonctions membres
[explicit noexcept] QCache::QCache(qsizetype maxCost = 100)
Crée un cache dont le coût total du contenu ne dépassera jamais la valeur définie par ` maxCost`.
QCache::~QCache()
Vide le cache. Supprime tous les objets contenus dans le cache.
[noexcept(...)] void QCache::clear()
Supprime tous les objets du cache.
Remarque : cette fonction est de type « noexcept » lorsque ` std::is_nothrow_destructible_v<Node> ` est de type ` true`.
Voir également 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 également take() et remove().
[noexcept] qsizetype QCache::count() const
Identique à ` size()`.
bool QCache::insert(const Key &key, T *object, qsizetype cost = 1)
Ajoute object au cache avec la clé key et le coût associé cost. Tout objet portant la même clé et déjà présent dans le cache sera supprimé.
Après cet appel, object appartient à QCache et peut être supprimé à tout moment. En particulier, si cost est supérieur à 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 présentes dans le cache.
[noexcept] qsizetype QCache::maxCost() const
Renvoie le coût total maximal autorisé du cache.
Voir également 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.
Avertissement : l'objet renvoyé appartient à QCache et peut être supprimé à tout moment.
Voir également 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 de type « noexcept » lorsque std::is_nothrow_destructible_v<Node> est égal à true.
Voir également take() et clear().
[noexcept(...)] void QCache::setMaxCost(qsizetype cost)
Définit le coût total maximal 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 de type `noexcept` lorsque ` std::is_nothrow_destructible_v<Node> ` est égal à ` true`.
Voir également maxCost() et totalCost().
[noexcept] qsizetype QCache::size() const
Renvoie le nombre d'objets présents dans le cache.
Voir également isEmpty().
[noexcept(...)] T *QCache::take(const Key &key)
Retire du cache l'objet associé à la clé key sans le supprimer. Renvoie un pointeur vers l'objet retiré, ou 0 si la clé n'existe pas dans le cache.
La propriété de l’objet renvoyé est transférée à l’appelant.
Remarque : cette fonction est de type « noexcept » lorsque std::is_nothrow_destructible_v<Key> vaut true.
Voir aussi remove().
[noexcept] qsizetype QCache::totalCost() const
Renvoie le coût total des objets présents dans le cache.
Cette valeur est généralement inférieure à celle renvoyée par ` maxCost()`, mais ` QCache ` fait exception pour les classes implicitement partagées de Qt. Si un objet mis en cache partage ses données internes avec une autre instance, ` QCache ` peut conserver l'objet en mémoire, ce qui peut contribuer à rendre la valeur de `totalCost()` supérieure à celle renvoyée par ` maxCost()`.
Voir également 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.
Cela revient à appeler la fonction object().
Avertissement : l'objet renvoyé 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.