first comit

This commit is contained in:
drygrass
2025-11-18 23:41:04 +08:00
commit 89351183c3
13 changed files with 2376 additions and 0 deletions

41
KArcCache/KArcCacheNode.h Normal file
View File

@@ -0,0 +1,41 @@
#pragma once
#include <memory>
namespace KamaCache
{
template<typename Key, typename Value>
class ArcNode
{
private:
Key key_;
Value value_;
size_t accessCount_;
std::weak_ptr<ArcNode> prev_;
std::shared_ptr<ArcNode> next_;
public:
ArcNode() : accessCount_(1), next_(nullptr) {}
ArcNode(Key key, Value value)
: key_(key)
, value_(value)
, accessCount_(1)
, next_(nullptr)
{}
// Getters
Key getKey() const { return key_; }
Value getValue() const { return value_; }
size_t getAccessCount() const { return accessCount_; }
// Setters
void setValue(const Value& value) { value_ = value; }
void incrementAccessCount() { ++accessCount_; }
template<typename K, typename V> friend class ArcLruPart;
template<typename K, typename V> friend class ArcLfuPart;
};
} // namespace KamaCache