<, == and != done

This commit is contained in:
Pagwin 2024-11-24 22:18:00 -05:00
parent 09d2323cbf
commit 9271042e78
No known key found for this signature in database
GPG key ID: 81137023740CA260

36
Map.hpp
View file

@ -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