一、描述
QCache<Key, T> 定义了一个缓存,用于存储键值对。
与其他一些基于键的数据结构(例如 QMap 或 QHash)相比,使用 QCache 的优势在于 QCache 会自动获取插入缓存中的对象的所有权,并在必要时删除它们以为新对象腾出空间。
将对象插入缓存时,可以指定一个成本(cost),该成本与对象占用的内存量有一定的关系。当所有对象的成本总和 (totalCost()) 超过缓存的限制 (maxCost()) 时,QCache 开始删除缓存中的对象以保持在限制之下。
默认情况下,QCache 的 maxCost() 为 100。可以在 QCache 构造函数中指定不同的值。
二、部分成员函数
1、bool insert(const Key &key, T *object, qsizetype cost = 1)
插入,缓存中已存在具有相同键的任何对象都将被删除。返回是否成功插入。
此调用后,对象归 QCache 所有,并且可以随时删除。特别是,如果 cost 大于 maxCost(),对象会被立即删除。
totalCost()将加上参数3。
2、T * object(const Key &key)
返回与键 key 关联的对象,如果键在缓存中不存在,则返回 nullptr。
3、T * take(const Key &key)
从缓存中取出与 key 关联的对象而不删除它。返回指向取出的对象的指针,如果键在缓存中不存在,则返回 nullptr。返回对象的所有权被传递给调用者。