From 9271042e78eef777093c83412b639180c7a9da5a Mon Sep 17 00:00:00 2001 From: Pagwin Date: Sun, 24 Nov 2024 22:18:00 -0500 Subject: [PATCH] <, == and != done --- Map.hpp | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/Map.hpp b/Map.hpp index ab642cd..5ac104f 100644 --- a/Map.hpp +++ b/Map.hpp @@ -940,9 +940,39 @@ public: } void erase(const Key_T &key) { this->erase(this->find(key)); } // TODO: - friend bool operator==(const Map &lhs, const Map &rhs) { assert(false); } - friend bool operator!=(const Map &lhs, const Map &rhs) { assert(false); } - friend bool operator<(const Map &lhs, const Map &rhs) { assert(false); } + friend bool operator==(const Map &lhs, const Map &rhs) { + if (lhs.size() != rhs.size()) { + return false; + } + auto lhs_iter = lhs.begin(); + auto rhs_iter = rhs.begin(); + while (lhs_iter != lhs.end()) { + if (*lhs_iter != *rhs_iter) { + return false; + } + ++lhs_iter; + ++rhs_iter; + } + return true; + } + friend bool operator!=(const Map &lhs, const Map &rhs) { + return !(lhs == rhs); + } + friend bool operator<(const Map &lhs, const Map &rhs) { + auto lhs_iter = lhs.begin(); + auto rhs_iter = rhs.begin(); + while (lhs_iter != lhs.end() && rhs_iter != rhs.end()) { + if (*lhs_iter < *rhs_iter) { + return true; + } + if (*lhs_iter != *rhs_iter) { + return false; + } + ++lhs_iter; + ++rhs_iter; + } + return lhs.size() < rhs.size(); + } }; } // namespace cs440 #endif