相关参考
什么是LRU?
什么是LRU-K替换策略?
补充
下面是一些额外的辅助变量(不是必须得,需要根据你的具体实现来选择。)
下面做一个简单示例
相关视频
buffer pool的目的
内存与硬盘
缓存池的组成
page和frame是什么关系?
C++17新特性,RAII机制的并发编程技巧
std::scoped_lock<std::mutex> lock(latch_);
以下内容来源于ChatGPT
示例如下所示:
#include <iostream>
#include <type_traits>
// 函数模板,仅当T是整数类型时才可用
template <typename T>
typename std::enable_if<std::is_integral<T>::value, void>::type
printNumber(T number) {
std::cout << "Number: " << number << std::endl;
}
// 函数模板,仅当T是浮点类型时才可用
template <typename T>
typename std::enable_if<std::is_floating_point<T>::value, void>::type
printNumber(T number) {
std::cout << "Number: " << number << std::endl;
}
int main() {
printNumber(10); // 调用第一个printNumber模板
printNumber(3.14); // 调用第二个printNumber模板
printNumber("Hello"); // 错误,没有匹配的模板可用
return 0;
}
以下内容来源于ChatGPT
if constexpr (条件)
{
// 编译时满足条件时执行的代码块
}
else
{
// 编译时条件不满足时执行的代码块
}
以下是一个使用 constexpr if 的示例:
#include <iostream>
template<typename T>
void printValue(T value)
{
if constexpr (std::is_integral<T>::value)
{
std::cout << "Integral value: " << value << std::endl;
}
else if constexpr (std::is_floating_point<T>::value)
{
std::cout << "Floating point value: " << value << std::endl;
}
else
{
std::cout << "Other type value." << std::endl;
}
}
int main()
{
printValue(42); // 编译时选择第一个代码块
printValue(3.14); // 编译时选择第二个代码块
printValue("Hello"); // 编译时选择第三个代码块
return 0;
}
constexpr if
和 enable if
是两个不同的C++特性,用于在编译时根据条件选择代码路径,但它们在语法和使用上有一些区别。constexpr if
是C++17引入的新特性,使用关键字 if constexpr
。它允许在代码块中使用条件语句,并根据条件在编译时选择性地编译不同的代码路径。enable if
是一个模板元编程工具,使用 typename std::enable_if<condition, T>::type
的形式将其应用于模板参数或函数返回类型。它用于在编译时基于类型或条件启用或禁用函数模板。constexpr if
可以在任何函数中使用,包括普通函数和模板函数。它允许对常量表达式进行静态分支,并且可以在编译时决定不同的代码路径。enable if
通常与模板函数一起使用,用于在编译时根据类型或条件启用或禁用特定的模板函数。它主要用于模板元编程和SFINAE(Substitution Failure Is Not An Error)技术。constexpr if
适用于需要在编译时进行条件分支的情况,例如根据类型或常量表达式的值执行不同的代码路径。enable if
适用于需要在模板函数中根据类型或条件启用或禁用特定实例化的情况。它通常用于模板函数的重载和模板参数的限制。constexpr if
和 enable if
是两个不同的特性,适用于不同的场景。constexpr if
提供了在编译时进行条件分支的能力,而 enable if
是用于模板元编程和SFINAE技术的工具,用于在编译时选择特定的模板函数或模板参数。补充
P1 拖了好久才完成,在公司实习时弄了一些,之后回学校实训弄了一些,最后还是参考了别人的代码,后面的内容要加速了。