이 페이지에서

QCache Class

template <typename Key, typename T> class QCache

QCache 클래스는 캐시 기능을 제공하는 템플릿 클래스입니다. 더 보기...

헤더: #include <QCache>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

참고: 이 클래스의 모든 함수는 재진입 가능합니다.

공개 함수

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가 소유하게 되며, QCache는 다른 객체를 위한 공간을 확보하기 위해 언제든지 해당 객체를 삭제할 수 있습니다.

캐시에서 객체를 조회하려면 object() 또는 연산자 []()를 사용하십시오. 이 함수는 키를 통해 객체를 조회하며, 캐시에 저장된 객체(캐시가 소유하고 있음)에 대한 포인터나 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`입니다.

remove() 및 take()도 참조하십시오 .

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

캐시에 키 key 와 연관된 객체가 포함되어 있으면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.

take() 및 remove()도 참조하십시오 .

[noexcept] qsizetype QCache::count() const

size()와 동일합니다.

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

object 를 키 key 및 관련 비용 cost 과 함께 캐시에 삽입합니다. 캐시에 이미 동일한 키를 가진 객체가 있는 경우 해당 객체는 제거됩니다.

이 호출 후, object 는 QCache 가 소유하게 되며 언제든지 삭제될 수 있습니다. 특히, cost 가 maxCost()보다 크면 객체는 즉시 삭제됩니다.

객체가 캐시에 삽입된 경우 이 함수는 true 을 반환하고, 그렇지 않은 경우 false 을 반환합니다.

take() 및 remove()도 참조하십시오 .

[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 가 소유하고 있으며, 언제든지 삭제될 수 있습니다.

take() 및 remove()도 참조하십시오 .

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

key 키와 연관된 객체를 삭제합니다. 캐시에서 해당 객체를 찾은 경우 true 을 반환하고, 그렇지 않은 경우 false 을 반환합니다.

참고: std::is_nothrow_destructible_v<Node> 가 true 인 경우,이 함수는 noexcept입니다.

take() 및 clear()도 참조하십시오 .

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

캐시의 허용되는 최대 총 비용을 cost 로 설정합니다. 현재 총 비용이 cost 보다 크면, 일부 객체가 즉시 삭제됩니다.

참고: std::is_nothrow_destructible_v<Node> 가 true 일 때,이 함수는 noexcept입니다.

maxCost() 및 totalCost()도 참조하십시오 .

[noexcept] qsizetype QCache::size() const

캐시에 있는 객체의 개수를 반환합니다.

isEmpty()도 참조하십시오 .

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

key 키와 연관된 객체를 삭제하지 않고 캐시에서 가져옵니다. 가져온 객체에 대한 포인터를 반환하며, 캐시에 해당 키가 존재하지 않으면 0을 반환합니다.

반환된 객체의 소유권은 호출자에게 이전됩니다.

참고: std::is_nothrow_destructible_v<Key> 가 ` true`인 경우,이 함수는 `noexcept`입니다.

remove()도 참조하십시오 .

[noexcept] qsizetype QCache::totalCost() const

캐시에 있는 객체들의 총 비용을 반환합니다.

이 값은 일반적으로 ` maxCost()`보다 작지만, ` QCache `는 Qt의 암시적 공유 클래스에 대해서는 예외를 적용합니다. 캐시된 객체가 내부 데이터를 다른 인스턴스와 공유하는 경우, ` QCache `가 해당 객체를 계속 유지하게 되어 `totalCost()`가 ` maxCost()`보다 커질 수 있습니다.

setMaxCost()도 참조하십시오 .

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

key 키와 연관된 객체를 반환하며, 해당 키가 캐시에 존재하지 않으면 nullptr 를 반환합니다.

이는 object()과 동일합니다.

경고: 반환된객체는 QCache 가 소유하고 있으며, 언제든지 삭제될 수 있습니다.

© 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.