Класс QCache
Класс QCache — это шаблонный класс, предоставляющий кеш. Подробнее...
| Заголовок: | #include <QCache> |
| qmake: | QT += core |
Примечание: Все функции в этом классе являются перевходовыми.
Открытые функции
| QCache(int maxCost = ...) | |
| ~QCache() | |
| void | clear() |
| bool | contains(const Key &key) const |
| int | count() const |
| bool | insert(const Key &key, T *object, int cost = ...) |
| bool | isEmpty() const |
| QList<Key> | keys() const |
| int | maxCost() const |
| T * | object(const Key &key) const |
| bool | remove(const Key &key) |
| void | setMaxCost(int cost) |
| int | size() const |
| T * | take(const Key &key) |
| int | totalCost() const |
| T * | operator[](const Key &key) const |
Подробное описание
QCache<Key, T> определяет кеш, который хранит объекты типа T, связанные с ключами типа Key. Например, вот определение кеша, который хранит объекты типа Employee, связанные с целочисленным ключом:
QCache<int, Employee> cache;
Вот как вставить объект в кеш:
Employee *employee = new Employee;
employee->setId(37);
employee->setName("Richard Schmit");
...
cache.insert(employee->id(), employee); Преимущество использования QCache по сравнению с некоторыми другими структурами данных на основе ключей (например, QMap или QHash) заключается в том, что QCache автоматически берет на себя управление объектами, которые вставляются в кеш, и удаляет их, чтобы освободить место для новых объектов, если это необходимо. При вставке объекта в кеш вы можете указать cost, который должен иметь некоторое приближенное отношение к объему памяти, занимаемой объектом. Когда сумма всех затрат объектов (totalCost()) превышает предел кеша (maxCost()), QCache начинает удалять объекты в кеше, чтобы поддерживать предел, начиная с менее недавно обращённых объектов.
По умолчанию, QCache’s maxCost() равен 100. Вы можете указать другое значение в конструкторе QCache:
QCache<int, MyDataStructure> cache(5000);
Каждый раз, когда вы вызываете insert(), вы можете указать затраты в качестве третьего аргумента (после ключа и указателя на объект для вставки). После вызова вставленный объект принадлежит QCache, который может удалить его в любое время, чтобы освободить место для других объектов.
Чтобы найти объекты в кеше, используйте object() или оператор[]. Эта функция ищет объект по его ключу и возвращает либо указатель на кэшированный объект (который принадлежит кешу), либо nullptr.
Если вы хотите удалить объект из кеша для определенного ключа, вызовите remove(). Это также удалит объект. Если вы хотите удалить объект из кеша, не позволяя QCache его удалять, используйте take().
См. также QPixmapCache, QHash и QMap.
Документация по членам-функциям
QCache::QCache(int maxCost = ...)
Создаёт кеш, содержимое которого никогда не будет иметь общей стоимости, превышающей maxCost.
QCache::~QCache()
Уничтожает кеш. Удаляет все объекты в кеше.
void QCache::clear()
Удаляет все объекты в кеше.
bool QCache::contains(const Key &key) const
Возвращает true , если кеш содержит объект, связанный с ключом key; в противном случае возвращает false.
int QCache::count() const
То же самое, что и size().
bool QCache::insert(const Key &key, T *object, int cost = ...)
Вставляет object в кеш с ключом key и связанными затратами cost. Любой объект с тем же ключом, уже находящийся в кеше, будет удалён.
После этого вызова object принадлежит QCache и может быть удалён в любое время. В частности, если cost больше, чем maxCost(), объект будет немедленно удалён.
Функция возвращает true , если объект был вставлен в кеш; в противном случае она возвращает false.
bool QCache::isEmpty() const
Возвращает true , если кеш не содержит объектов; в противном случае возвращает false.
См. также size().
QList<Key> QCache::keys() const
Возвращает список ключей в кеше.
int QCache::maxCost() const
Возвращает максимально допустимую общую стоимость кеша.
См. также setMaxCost() и totalCost().
T *QCache::object(const Key &key) const
Возвращает объект, связанный с ключом key, или nullptr , если ключ не существует в кеше.
Предупреждение: Возвращаемый объект принадлежит QCache и может быть удалён в любое время.
bool QCache::remove(const Key &key)
Удаляет объект, связанный с ключом key. Возвращает true , если объект был найден в кеше; в противном случае возвращает false.
void QCache::setMaxCost(int cost)
Устанавливает максимальную допустимую общую стоимость кеша на cost. Если текущая общая стоимость больше cost, некоторые объекты немедленно удаляются.
См. также maxCost() и totalCost().
int QCache::size() const
Возвращает количество объектов в кеше.
См. также isEmpty().
T *QCache::take(const Key &key)
Извлекает объект, связанный с ключом key, из кеша без его удаления. Возвращает указатель на извлечённый объект или 0, если ключ не существует в кеше.
Владение возвращаемым объектом передаётся вызывающей стороне.
См. также remove().
int QCache::totalCost() const
Возвращает общую стоимость объектов в кеше.
Это значение обычно ниже maxCost(), но QCache делает исключение для неявно совместно используемых классов Qt. Если кэшируемый объект разделяет свои внутренние данные с другим экземпляром, QCache может сохранить объект, возможно, внося вклад в увеличение totalCost() больше, чем maxCost().
См. также setMaxCost().
T *QCache::operator[](const Key &key) const
Возвращает объект, связанный с ключом key, или nullptr , если ключ не существует в кеше.
Это то же самое, что и object().
Предупреждение: Возвращаемый объект принадлежит QCache и может быть удалён в любое время.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qcache.html