QCache Class
template <typename Key, typename T> class QCacheQCache 클래스는 캐시를 제공하는 템플릿 클래스입니다. 더 보기...
헤더: | #include <QCache> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 상속된 멤버를 포함한 모든 멤버 목록
- QCache는 암시적으로 공유되는 클래스의 일부입니다.
참고: 이 클래스의 모든 함수는 재진입됩니다.
공용 함수
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 |
상세 설명
QCache<Key, T>는 Key 유형의 키와 연관된 T 유형의 객체를 저장하는 캐시를 정의합니다. 예를 들어 다음은 정수 키와 연관된 Employee 유형의 객체를 저장하는 캐시의 정의입니다:
QCache<int, Employee> cache;
다음은 캐시에 개체를 삽입하는 방법입니다:
Employee *employee = new Employee; employee->setId(37); employee->setName("Richard Schmit"); ... cache.insert(employee->id(), employee);
다른 키 기반 데이터 구조(예: QMap 또는 QHash)에 비해 QCache를 사용할 때의 장점은 QCache가 캐시에 삽입된 객체의 소유권을 자동으로 가져오고 필요한 경우 새 객체를 위한 공간을 만들기 위해 삭제한다는 것입니다. 캐시에 객체를 삽입할 때 객체가 차지하는 메모리 양과 대략적인 관계가 있는 비용을 지정할 수 있습니다. 모든 객체의 비용 합계(totalCost())가 캐시의 한도(maxCost())를 초과하면 QCache는 최근에 액세스한 객체부터 캐시에서 객체를 삭제하기 시작하여 한도 이하로 유지합니다.
기본적으로 QCache의 maxCost()는 100입니다. QCache 생성자에서 다른 값을 지정할 수 있습니다:
QCache<int, MyDataStructure> cache(5000);
insert()를 호출할 때마다 세 번째 인수로 비용을 지정할 수 있습니다(키와 삽입할 객체에 대한 포인터 다음에). 호출 후 삽입된 객체는 QCache가 소유하게 되며, 다른 객체를 위한 공간을 확보하기 위해 언제든지 삭제할 수 있습니다.
캐시에서 객체를 조회하려면 object() 또는 operator[]()를 사용합니다. 이 함수는 키로 객체를 조회하고 캐시된 객체에 대한 포인터(캐시 소유) 또는 nullptr
를 반환합니다.
특정 키에 대한 캐시에서 개체를 제거하려면 remove()를 호출합니다. 그러면 해당 객체도 삭제됩니다. QCache가 개체를 삭제하지 않고 캐시에서 개체를 제거하려면 take()를 사용합니다.
QPixmapCache, QHash, QMap 를참조하세요 .
멤버 함수 문서
[explicit noexcept]
QCache::QCache(qsizetype maxCost = 100)
콘텐츠의 총 비용이 maxCost 보다 크지 않은 캐시를 구축합니다.
QCache::~QCache()
캐시를 삭제합니다. 캐시에 있는 모든 개체를 삭제합니다.
[noexcept(...)]
void QCache::clear()
캐시에 있는 모든 객체를 삭제합니다.
참고: 이 함수는 std::is_nothrow_destructible_v<Node>
가 true
일 때를 제외하고는 작동하지 않습니다.
[noexcept]
bool QCache::contains(const Key &key) const
캐시에 키 key 와 연관된 객체가 포함되어 있으면 true
를 반환하고, 그렇지 않으면 false
를 반환합니다.
[noexcept]
qsizetype QCache::count() const
size()와 동일합니다.
bool QCache::insert(const Key &key, T *object, qsizetype cost = 1)
key 키와 관련 비용 cost 을 사용하여 object 을 캐시에 삽입합니다. 이미 캐시에 동일한 키를 가진 오브젝트는 모두 제거됩니다.
이 호출 후 object 은 QCache 이 소유하며 언제든지 삭제될 수 있습니다. 특히 cost 가 maxCost()보다 큰 경우 객체는 즉시 삭제됩니다.
이 함수는 객체가 캐시에 삽입된 경우 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
[noexcept]
bool QCache::isEmpty() const
캐시에 객체가 없는 경우 true
를 반환하고, 그렇지 않으면 false
을 반환합니다.
size()도 참조하세요 .
QList<Key> QCache::keys() const
캐시에 있는 키 목록을 반환합니다.
[noexcept]
qsizetype QCache::maxCost() const
캐시의 최대 허용 총 비용을 반환합니다.
setMaxCost() 및 totalCost()도 참조하세요 .
[noexcept]
T *QCache::object(const Key &key) const
키와 연결된 객체를 반환합니다 key, 또는 키가 캐시에 없는 경우 nullptr
.
경고: 반환된 객체는 QCache 소유이며 언제든지 삭제될 수 있습니다.
[noexcept(...)]
bool QCache::remove(const Key &key)
키와 연관된 객체를 삭제합니다 key. 객체가 캐시에서 발견되면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
참고: 이 함수는 std::is_nothrow_destructible_v<Node>
가 true
일 때를 제외하고는 반환되지 않습니다.
[noexcept(...)]
void QCache::setMaxCost(qsizetype cost)
캐시의 최대 허용 총 비용을 cost 으로 설정합니다. 현재 총 비용이 cost 보다 크면 일부 객체가 즉시 삭제됩니다.
참고: 이 함수는 std::is_nothrow_destructible_v<Node>
가 true
일 때를 제외하고는 사용되지 않습니다.
maxCost() 및 totalCost()도 참조하세요 .
[noexcept]
qsizetype QCache::size() const
캐시에 있는 객체 수를 반환합니다.
isEmpty()도 참조하세요 .
[noexcept(...)]
T *QCache::take(const Key &key)
key 키와 연관된 객체를 삭제하지 않고 캐시에서 꺼냅니다. 꺼낸 객체에 대한 포인터를 반환하거나 키가 캐시에 존재하지 않으면 0을 반환합니다.
반환된 객체의 소유권은 호출자에게 전달됩니다.
참고: 이 함수는 std::is_nothrow_destructible_v<Key>
가 true
인 경우를 제외하고는 작동하지 않습니다.
remove()도 참조하세요 .
[noexcept]
qsizetype QCache::totalCost() const
캐시에 있는 객체의 총 비용을 반환합니다.
이 값은 일반적으로 maxCost() 이하이지만, QCache 은 Qt XML의 암시적으로 공유되는 클래스에 대해 예외를 둡니다. 캐시된 객체가 내부 데이터를 다른 인스턴스와 공유하는 경우 QCache 은 객체를 계속 유지하여 totalCost()를 maxCost()보다 크게 만드는 데 기여할 수 있습니다.
setMaxCost()도 참조하십시오 .
[noexcept]
T *QCache::operator[](const Key &key) const
키와 연결된 객체를 반환합니다 key, 또는 키가 캐시에 없는 경우 nullptr
.
이는 object()와 동일합니다.
경고: 반환된 객체는 QCache 소유이며 언제든지 삭제될 수 있습니다.
© 2025 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.