mirror of
https://github.com/TheAlgorithms/C-Plus-Plus.git
synced 2026-05-09 07:32:54 +08:00
using list instead of bits/stdc++.h
This commit is contained in:
@@ -45,10 +45,10 @@
|
|||||||
* @author [Nitin Sharma](https://github.com/foo290)
|
* @author [Nitin Sharma](https://github.com/foo290)
|
||||||
* */
|
* */
|
||||||
|
|
||||||
#include <bits/stdc++.h> /// for std::list
|
#include <list> /// for std::list
|
||||||
|
|
||||||
#include <cassert> /// for assert
|
#include <cassert> /// for assert
|
||||||
#include <iostream> /// for IO Operations
|
#include <iostream> /// for IO Operations
|
||||||
|
#include <unordered_map> /// for std::unordered_map
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @namespace lru_cache
|
* @namespace lru_cache
|
||||||
@@ -59,7 +59,7 @@ namespace lru_cache {
|
|||||||
/**
|
/**
|
||||||
* @brief LRU cache class
|
* @brief LRU cache class
|
||||||
*/
|
*/
|
||||||
class LRUCache {
|
class LRUCache {
|
||||||
int pageFrame; ///< Page frame, or total size of the cache.
|
int pageFrame; ///< Page frame, or total size of the cache.
|
||||||
std::list<int> cache; ///< Cache linked list (using the STL)
|
std::list<int> cache; ///< Cache linked list (using the STL)
|
||||||
std::unordered_map<int, std::list<int>::iterator>
|
std::unordered_map<int, std::list<int>::iterator>
|
||||||
@@ -127,7 +127,7 @@ class LRUCache {
|
|||||||
* @returns int
|
* @returns int
|
||||||
* */
|
* */
|
||||||
int getPageFault() const { return pageFault; }
|
int getPageFault() const { return pageFault; }
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace lru_cache
|
} // namespace lru_cache
|
||||||
|
|
||||||
@@ -137,11 +137,11 @@ namespace lru_tests {
|
|||||||
* @tparam T Type of the given message.
|
* @tparam T Type of the given message.
|
||||||
* @returns void
|
* @returns void
|
||||||
* */
|
* */
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void log(T msg) {
|
void log(T msg) {
|
||||||
// It's just to avoid writing cout and endl
|
// It's just to avoid writing cout and endl
|
||||||
std::cout << "[TESTS] : ---> " << msg << std::endl;
|
std::cout << "[TESTS] : ---> " << msg << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief A simple test case
|
* @brief A simple test case
|
||||||
@@ -149,7 +149,7 @@ void log(T msg) {
|
|||||||
* miss
|
* miss
|
||||||
* @returns void
|
* @returns void
|
||||||
* */
|
* */
|
||||||
static void test_1() {
|
static void test_1() {
|
||||||
int expected_hits = 2;
|
int expected_hits = 2;
|
||||||
int expected_pageFault = 4;
|
int expected_pageFault = 4;
|
||||||
|
|
||||||
@@ -168,7 +168,7 @@ static void test_1() {
|
|||||||
cache.getPageFault() == expected_pageFault);
|
cache.getPageFault() == expected_pageFault);
|
||||||
log("Assert successful!");
|
log("Assert successful!");
|
||||||
log("Test-1 complete!");
|
log("Test-1 complete!");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief A test case contains hits more than cache size
|
* @brief A test case contains hits more than cache size
|
||||||
@@ -176,7 +176,7 @@ static void test_1() {
|
|||||||
* miss
|
* miss
|
||||||
* @returns void
|
* @returns void
|
||||||
* */
|
* */
|
||||||
static void test_2() {
|
static void test_2() {
|
||||||
int expected_hits = 4;
|
int expected_hits = 4;
|
||||||
int expected_pageFault = 2;
|
int expected_pageFault = 2;
|
||||||
|
|
||||||
@@ -195,7 +195,7 @@ static void test_2() {
|
|||||||
cache.getPageFault() == expected_pageFault);
|
cache.getPageFault() == expected_pageFault);
|
||||||
log("Assert successful!");
|
log("Assert successful!");
|
||||||
log("Test-2 complete!");
|
log("Test-2 complete!");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief A simple test case
|
* @brief A simple test case
|
||||||
@@ -203,7 +203,7 @@ static void test_2() {
|
|||||||
* miss
|
* miss
|
||||||
* @returns void
|
* @returns void
|
||||||
* */
|
* */
|
||||||
static void test_3() {
|
static void test_3() {
|
||||||
int expected_hits = 1;
|
int expected_hits = 1;
|
||||||
int expected_pageFault = 5;
|
int expected_pageFault = 5;
|
||||||
|
|
||||||
@@ -222,19 +222,19 @@ static void test_3() {
|
|||||||
cache.getPageFault() == expected_pageFault);
|
cache.getPageFault() == expected_pageFault);
|
||||||
log("Assert successful!");
|
log("Assert successful!");
|
||||||
log("Test-3 complete!");
|
log("Test-3 complete!");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief A function to invoke all test cases
|
* @brief A function to invoke all test cases
|
||||||
* @returns void
|
* @returns void
|
||||||
* */
|
* */
|
||||||
static void run_tests() {
|
static void run_tests() {
|
||||||
test_1();
|
test_1();
|
||||||
test_2();
|
test_2();
|
||||||
test_3();
|
test_3();
|
||||||
log("");
|
log("");
|
||||||
log("TESTS COMPLETED!");
|
log("TESTS COMPLETED!");
|
||||||
}
|
}
|
||||||
} // namespace lru_tests
|
} // namespace lru_tests
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user