QCache Class
template <typename Key, typename T> class QCacheQCache クラスは、キャッシュを提供するテンプレート・クラスです。詳細...
Header: | #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>" が真の場合、例外をスローしません。
[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>" が真の場合、例外をスローしません。
[noexcept(...)]
void QCache::setMaxCost(qsizetype cost)
キャッシュの最大許容総コストをcost に設定します。 現在の総コストがcost より大きい場合、いくつかのオブジェクトは直ちに削除されます。
注意: この関数は、"std::is_nothrow_destructible_v<Node>" が真の場合、例外をスローしません。
maxCost() およびtotalCost()も参照のこと 。
[noexcept]
qsizetype QCache::size() const
キャッシュ内のオブジェクトの数を返します。
isEmpty() も参照して ください。
[noexcept(...)]
T *QCache::take(const Key &key)
キーkey に関連付けられたオブジェクトを削除せずにキャッシュから取り出します。取り出されたオブジェクトへのポインタ、またはそのキーがキャッシュに存在しない場合は 0 を返します。
返されたオブジェクトの所有権は呼び出し元に渡されます。
注意: この関数は、"std::is_nothrow_destructible_v<Key>" が真の場合、例外をスローしません。
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 が所有しており、いつでも削除できます。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。