From 0ebc9b2bce403762759b83803b4253e59e69ac79 Mon Sep 17 00:00:00 2001 From: kdx Date: Fri, 13 Jan 2023 06:45:41 +0100 Subject: comparaison operators --- main.cpp | 2 ++ vector.hpp | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 53 insertions(+), 7 deletions(-) diff --git a/main.cpp b/main.cpp index 7909b6b..bd8c700 100644 --- a/main.cpp +++ b/main.cpp @@ -6,6 +6,7 @@ int main() ft::vector vec(10); ft::vector other(vec); vec = other; + std::cout << (vec == other) << std::endl; other.assign(ft::vector::size_type(5), 3); for (ft::vector::size_type i = 0; i < other.size(); i++) std::cout << other.at(i) << std::endl; @@ -18,5 +19,6 @@ int main() other.pop_back(); for (ft::vector::size_type i = 0; i < other.size(); i++) std::cout << other.at(i) << std::endl; + std::cout << (vec == other) << std::endl; return 0; } diff --git a/vector.hpp b/vector.hpp index b43d994..b0c0d52 100644 --- a/vector.hpp +++ b/vector.hpp @@ -288,23 +288,67 @@ namespace ft { }; template void swap(vector& lhs, - vector& rhs); + vector& rhs) + { + lhs.swap(rhs); + } + template bool operator==(const vector& lhs, - const vector& rhs); + const vector& rhs) + { + if (lhs.size() != rhs.size()) + return false; + for (typename vector::size_type i = 0; i < lhs.size(); i++) + if (lhs[i] != rhs[i]) + return false; + return true; + } + template bool operator!=(const vector& lhs, - const vector& rhs); + const vector& rhs) + { + return !(lhs == rhs); + } + template bool operator<(const vector& lhs, - const vector& rhs); + const vector& rhs) + { + const typename vector::size_type end + (lhs.size() < rhs.size() ? lhs.size() : rhs.size()); + for (typename vector::size_type i = 0; i < end; i++) { + if (lhs[i] < rhs[i]) + return true; + } + return lhs.size() < rhs.size(); + } + template bool operator<=(const vector& lhs, - const vector& rhs); + const vector& rhs) + { + return !(lhs > rhs); + } + template bool operator>(const vector& lhs, - const vector& rhs); + const vector& rhs) + { + const typename vector::size_type end + (lhs.size() < rhs.size() ? lhs.size() : rhs.size()); + for (typename vector::size_type i = 0; i < end; i++) { + if (lhs[i] > rhs[i]) + return true; + } + return lhs.size() > rhs.size(); + } + template bool operator>=(const vector& lhs, - const vector& rhs); + const vector& rhs) + { + return !(lhs < rhs); + } } -- cgit v1.2.3