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> は、T 型のオブジェクトを Key 型のキーに関連付けて格納するキャッシュを定義します。例えば、以下は、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() を呼び出すたびに、第 3 引数としてコストを指定できます (キーと挿入するオブジェクトへのポインタの後)。呼び出し後、挿入されたオブジェクトは QCache が所有し、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 となる。
[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)
object を、キーkey と関連するコストcost を持つキャッシュに挿入する。すでにキャッシュにある同じキーを持つオブジェクトは削除される。
この呼び出しの後、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 となる。
[noexcept(...)]
void QCache::setMaxCost(qsizetype cost)
キャッシュの最大許容総コストをcost に設定します。 現在の総コストがcost より大きい場合、いくつかのオブジェクトは直ちに削除されます。
注意: std::is_nothrow_destructible_v<Node>
がtrue
の場合、この関数は noexcept となります。
[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 が所有しており、いつでも削除できます。
© 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.