#pragma once #include namespace KamaCache { template class ArcNode { private: Key key_; Value value_; size_t accessCount_; std::weak_ptr prev_; std::shared_ptr 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 friend class ArcLruPart; template friend class ArcLfuPart; }; } // namespace KamaCache