Spec-Zone.ru › Qt 5.12

Класс 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 — это шаблонный класс, предоставляющий кэш.

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 автоматически принимает во владение объекты, которые вставляются в кэш, и удаляет их, чтобы освободить место для новых объектов, если необходимо. При вставке объекта в кэш вы можете указать стоимость, которая должна отражать приблизительный объем памяти, занимаемый объектом. Когда сумма стоимости всех объектов (totalCost()) превышает предел кэша (maxCost()), QCache начинает удалять объекты в кэше, чтобы сохранить его в рамках лимита, начиная с объектов, к которым меньше всего обращались.

По умолчанию, QCache's maxCost() равно 100. Вы можете указать другое значение в конструкторе QCache:

QCache<int, MyDataStructure> cache(5000);

Каждый раз, когда вы вызываете insert(), вы можете указать стоимость в качестве третьего аргумента (после ключа и указателя на объект для вставки). После вызова вставленный объект принадлежит QCache, который может удалить его в любое время, чтобы освободить место для других объектов.

Для поиска объектов в кэше используйте object() или оператор[]. Эта функция ищет объект по его ключу и возвращает указатель на кэшированный объект (который принадлежит кэшу) или 0.

Если вы хотите удалить объект из кэша для определенного ключа, вызовите remove(). Это также удалит объект. Если вы хотите удалить объект из кэша без удаления его QCache, используйте take().

См. также QPixmapCache, QHash и QMap.

Документация по членам-функциям

QCache::QCache(int maxCost = ...)

Конструирует кэш, содержимое которого никогда не будет иметь общей стоимости, превышающей maxCost.

QCache::~QCache()

Уничтожает кэш. Удаляет все объекты в кэше.

void QCache::clear()

Удаляет все объекты в кэше.

См. также remove() и take().

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

Возвращает true , если кэш содержит объект, связанный с ключом key; в противном случае возвращает false.

См. также take() и remove().

int QCache::count() const

То же самое, что и size().

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

Вставляет object в кэш с ключом key и соответствующей стоимостью cost. Любой объект с тем же ключом, уже находящийся в кэше, будет удален.

После этого вызова object принадлежит QCache и может быть удален в любое время. В частности, если cost больше, чем maxCost(), объект будет немедленно удален.

Функция возвращает true , если объект был вставлен в кэш; в противном случае возвращает false.

См. также take() и remove().

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, или 0, если ключ не существует в кэше.

Предупреждение: Возвращаемый объект принадлежит QCache и может быть удален в любое время.

См. также take() и remove().

bool QCache::remove(const Key &key)

Удаляет объект, связанный с ключом key. Возвращает true , если объект был найден в кэше; в противном случае возвращает false.

См. также take() и clear().

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, или 0, если ключ не существует в кэше.

Это то же самое, что и object().

Предупреждение: Возвращаемый объект принадлежит QCache и может быть удалён в любое время.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qcache.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API