From 6655f996b64c33adff514ed39319a2d1abfce8a5 Mon Sep 17 00:00:00 2001 From: kinou-p Date: Tue, 29 Nov 2022 19:10:30 +0100 Subject: [PATCH] clean and done? --- .../iterators/bidirectionnal_iterator.hpp | 14 - containers/iterators/iterator_traits.hpp | 3 +- .../iterators/lexicographical_compare.hpp | 3 +- .../iterators/random_access_iterator.hpp | 65 +--- containers/iterators/reverse_iterator.hpp | 30 +- containers/map.hpp | 2 - ft_containers.hpp | 3 +- tests/map_tester.cpp | 305 ++++++++++++++---- tests/vector_tester.cpp | 57 +++- 9 files changed, 307 insertions(+), 175 deletions(-) diff --git a/containers/iterators/bidirectionnal_iterator.hpp b/containers/iterators/bidirectionnal_iterator.hpp index 8f4ac2e..e6ecb15 100644 --- a/containers/iterators/bidirectionnal_iterator.hpp +++ b/containers/iterators/bidirectionnal_iterator.hpp @@ -71,12 +71,6 @@ class bidirectionnal_iterator else if (!lhs._node || !rhs._node) return (false); return (lhs._node == rhs._node); - // if (lhs._node && rhs._node) - // return (lhs._node->data == rhs._node->data); - // if (!lhs._node && !rhs._node) - // return (true); - // else - // return (false); } friend bool operator!=(const bidirectionnal_iterator &rhs, const bidirectionnal_iterator &lhs) @@ -86,12 +80,6 @@ class bidirectionnal_iterator else if (!lhs._node || !rhs._node) return (true); return (lhs._node != rhs._node); - // if (lhs._node && rhs._node) - // return (lhs._node->data != rhs._node->data); - // if (!lhs._node && !rhs._node) - // return (true); - // else - // return (false); } reference operator*() { return (_node->data); } @@ -102,8 +90,6 @@ class bidirectionnal_iterator bidirectionnal_iterator &operator++() { - //std::cout << "end == "<< _end << std::endl; - //std::cout << "node == "<< _node << std::endl; if (_node != _end) _node = successor(_node); return (*this); diff --git a/containers/iterators/iterator_traits.hpp b/containers/iterators/iterator_traits.hpp index dab33b5..a9de6f7 100644 --- a/containers/iterators/iterator_traits.hpp +++ b/containers/iterators/iterator_traits.hpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/19 05:07:29 by apommier #+# #+# */ -/* Updated: 2022/11/25 08:51:46 by apommier ### ########.fr */ +/* Updated: 2022/11/29 17:29:01 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,6 @@ namespace ft typedef typename Iterator::iterator_category iterator_category; typedef typename Iterator::value_type value_type; typedef typename Iterator::difference_type difference_type; - //typedef typename difference_type distance_type; typedef typename Iterator::pointer pointer; typedef typename Iterator::reference reference; }; diff --git a/containers/iterators/lexicographical_compare.hpp b/containers/iterators/lexicographical_compare.hpp index d0a8f58..b3f248a 100644 --- a/containers/iterators/lexicographical_compare.hpp +++ b/containers/iterators/lexicographical_compare.hpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/28 14:58:42 by apommier #+# #+# */ -/* Updated: 2022/11/28 15:46:54 by apommier ### ########.fr */ +/* Updated: 2022/11/29 17:28:55 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,7 +29,6 @@ namespace ft bool lexicographical_compare (InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, Compare comp) { while (first1 != last1) { - std::cout << "i serve\n" << std::endl; if (comp(*first1, *first2)) return true; if (comp(*first2, *first1)) diff --git a/containers/iterators/random_access_iterator.hpp b/containers/iterators/random_access_iterator.hpp index 1f25c7c..f645c0f 100644 --- a/containers/iterators/random_access_iterator.hpp +++ b/containers/iterators/random_access_iterator.hpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/30 16:14:35 by apommier #+# #+# */ -/* Updated: 2022/11/28 13:35:24 by apommier ### ########.fr */ +/* Updated: 2022/11/29 17:27:54 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,12 +29,6 @@ namespace ft typedef T& reference; typedef random_access_iterator iterator_category; - // typedef typename ft::iterator_traits::iterator_category iterator_category; - // typedef typename ft::iterator_traits::value_type value_type; - // typedef typename ft::iterator_traits::difference_type difference_type; - // typedef typename ft::iterator_traits::pointer pointer; - // typedef typename ft::iterator_traits::reference reference; - private: pointer _ptr; @@ -50,13 +44,6 @@ namespace ft random_access_iterator(const random_access_iterator &cpy) {*this = cpy;} ~random_access_iterator(){} - - // random_access_iterator &operator=(const random_access_iterator &cpy) - // { - // _ptr = cpy._ptr; - // return (*this); - // } - operator random_access_iterator() const { @@ -72,29 +59,18 @@ namespace ft return (*this); } - - // random_access_iterator &operator=(pointer &ptr) - // { - // _ptr = ptr; - // return (*this); - // } - - - //--------------------------------------- //-------------INCREMENTERS-------------- //--------------------------------------- random_access_iterator &operator ++() { - //std::cout << "operandom ++\n"; _ptr++; return (*this); } random_access_iterator operator ++(int) { - //std::cout << "operandom 1 ++\n"; random_access_iterator tmp(*this); ++(*this); return (tmp); @@ -102,14 +78,12 @@ namespace ft random_access_iterator &operator --() { - //std::cout << "operandom --\n"; _ptr--; return (*this); } random_access_iterator operator --(int) { - //std::cout << "operandom 1 --\n"; random_access_iterator tmp(*this); --(*this); return (tmp); @@ -123,7 +97,6 @@ namespace ft reference operator *() const { return (*_ptr); } pointer operator ->() { return (_ptr); } pointer operator ->() const { return (_ptr); } - // reference operator [](difference_type nbr) { return (*(_ptr + nbr)); } const reference operator [](difference_type nbr) const { return (*(_ptr + nbr)); } //--------------------------------------- @@ -135,8 +108,6 @@ namespace ft friend random_access_iterator operator +(int const lhs, random_access_iterator const& rhs) { return (rhs + lhs); } // n + a random_access_iterator operator -(difference_type nbr) const { return random_access_iterator(_ptr - nbr); } // a - n difference_type operator -(random_access_iterator const &rhs) const { return (_ptr - rhs._ptr) ; } // a - b - //friend difference_type &operator -(random_access_iterator const& lhs, random_access_iterator const& rhs) { return ((difference_type)(lhs._ptr - rhs._ptr)); } // a - b - //random_access_iterator operator -(const random_access_iterator &b) { return random_access_iterator(_ptr + b); } // a - b 2? random_access_iterator &operator +=(difference_type nbr) { @@ -163,12 +134,6 @@ namespace ft //-------------COMPARAISON--------------- //--------------------------------------- - // bool operator ==(const random_access_iterator &b) { return (this->_ptr == b._ptr); } - // bool operator !=(const random_access_iterator &b) { return (this->_ptr != b._ptr); } - // bool operator <(const random_access_iterator &b) { return (this->_ptr < b._ptr); } - // bool operator >(const random_access_iterator &b) { return (this->_ptr > b._ptr); } - // bool operator <=(const random_access_iterator &b) { return (this->_ptr <= b._ptr); } - // bool operator >=(const random_access_iterator &b) { return (this->_ptr >= b._ptr); } friend bool operator ==(random_access_iterator const& a, random_access_iterator const& b) { return (a._ptr == b._ptr); } friend bool operator !=(random_access_iterator const& a, random_access_iterator const& b) { return (a._ptr != b._ptr); } friend bool operator <(random_access_iterator const& a, random_access_iterator const& b) { return (a._ptr < b._ptr); } @@ -176,34 +141,6 @@ namespace ft friend bool operator <=(random_access_iterator const& a, random_access_iterator const& b) { return (a._ptr <= b._ptr); } friend bool operator >=(random_access_iterator const& a, random_access_iterator const& b) { return (a._ptr >= b._ptr); } }; - - //--------------------------------------- - //-------------COMPARAISON--------------- - //--------------------------------------- - - // template - // bool operator ==(const random_access_iterator<_Ite> &a, const random_access_iterator<_Ite> &b) { return (a._ptr == b._ptr); } - // template - // bool operator !=(const random_access_iterator<_Ite> &a, const random_access_iterator<_Ite> &b) { return (a._ptr != b._ptr); } - // template - // bool operator <(const random_access_iterator<_Ite> &a, const random_access_iterator<_Ite> &b) { return (a._ptr < b._ptr); } - // template - // bool operator >(const random_access_iterator<_Ite> &a, const random_access_iterator<_Ite> &b) { return (a._ptr > b._ptr); } - // template - // bool operator <=(const random_access_iterator<_Ite> &a, const random_access_iterator<_Ite> &b) { return (a._ptr <= b._ptr); } - // template - // bool operator >=(const random_access_iterator<_Ite> &a, const random_access_iterator<_Ite> &b) { return (a._ptr >= b._ptr); } } - // template - // ft::random_access_iterator operator +(std::ptrdiff_t const nbr, ft::random_access_iterator const& rhs) - // { - // return (rhs + nbr); - // } // n + a - // template - // ft::random_access_iterator<_Iterator> operator+(typename ft::random_access_iterator<_Iterator>::difference_type n, ft::random_access_iterator<_Iterator> const &lhs) - // { - // return (lhs + n); - // } - #endif \ No newline at end of file diff --git a/containers/iterators/reverse_iterator.hpp b/containers/iterators/reverse_iterator.hpp index 3ee4ffa..89c43c6 100644 --- a/containers/iterators/reverse_iterator.hpp +++ b/containers/iterators/reverse_iterator.hpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/19 05:14:31 by apommier #+# #+# */ -/* Updated: 2022/11/23 10:59:47 by apommier ### ########.fr */ +/* Updated: 2022/11/29 17:48:32 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -63,14 +63,12 @@ namespace ft reverse_iterator& operator++() { - //std::cout << "ope0 ++\n"; --_Ite; return (*this); } reverse_iterator operator++(int) { - //std::cout << "ope ++\n"; reverse_iterator tmp = *this; _Ite--; return (tmp); @@ -78,41 +76,17 @@ namespace ft reverse_iterator& operator--() { - //std::cout << "ope0 --\n"; ++_Ite; return (*this); } reverse_iterator operator--(int) { - //std::cout << "ope --\n"; reverse_iterator tmp = *this; _Ite++; return (tmp); } - // reverse_iterator& operator++() { - // --_Ite; - // return (*this); - // } - - // reverse_iterator operator++(int) { - // reverse_iterator tmp = *this; - // _Ite--; - // return (tmp); - // } - - // reverse_iterator& operator--() { - // ++_Ite; - // return (*this); - // } - - // reverse_iterator operator--(int) { - // reverse_iterator tmp = *this; - // _Ite++; - // return (tmp); - // } - //--------------------------------------- //----------------ADRESS----------------- //--------------------------------------- @@ -175,7 +149,7 @@ namespace ft //--------------GET---------------- //--------------------------------- - iterator_type base() const { return /*iterator_type*/(_Ite); } + iterator_type base() const { return (_Ite); } }; template diff --git a/containers/map.hpp b/containers/map.hpp index 1f315e7..03fa28b 100644 --- a/containers/map.hpp +++ b/containers/map.hpp @@ -267,7 +267,6 @@ class map return (ft::make_pair(find, false)); NodePtr pt = newNode(val.first, val.second); insert(pt); - //iterator ret = find(val.first); _size++; return (ft::make_pair(iterator(_root, _end, pt), true)); } @@ -280,7 +279,6 @@ class map _size++; iterator ret = find(val.first); return (ret); - //return (iterator(_root, _end, pt)); } template diff --git a/ft_containers.hpp b/ft_containers.hpp index d3caf22..be26fe3 100644 --- a/ft_containers.hpp +++ b/ft_containers.hpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/12 19:46:33 by apommier #+# #+# */ -/* Updated: 2022/11/29 13:22:18 by apommier ### ########.fr */ +/* Updated: 2022/11/29 18:38:42 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,6 +21,7 @@ # include # include # include +# include void stack_tester(); void real_stack_tester(); diff --git a/tests/map_tester.cpp b/tests/map_tester.cpp index f6d0ba7..f1cdaa9 100644 --- a/tests/map_tester.cpp +++ b/tests/map_tester.cpp @@ -6,97 +6,280 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/29 12:55:17 by apommier #+# #+# */ -/* Updated: 2022/11/29 15:12:31 by apommier ### ########.fr */ +/* Updated: 2022/11/29 19:09:23 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ #include "../ft_containers.hpp" -template -std::string printPair(const T &iterator, bool nl = true, std::ostream &o = std::cout) +template +void cmp(const T_STACK &lhs, const T_STACK &rhs) { - o << "key: " << iterator->first << " | value: " << iterator->second; - if (nl) - o << std::endl; + std::cout << "== : " << (lhs == rhs) << " | != : " << (lhs != rhs) << std::endl; + std::cout << "< : " << (lhs < rhs) << " | <= : " << (lhs <= rhs) << std::endl; + std::cout << "> : " << (lhs > rhs) << " | >= : " << (lhs >= rhs) << std::endl; +} + +template +std::string printPair(const T &iterator) +{ + std::cout << "key: " << iterator->first << " | value: " << iterator->second; return (""); } template -void printSize(T_MAP const &mp, bool print_content = 1) +void printSize(T_MAP const &mp) { + std::cout << "empty: " << mp.empty() << std::endl; std::cout << "size: " << mp.size() << std::endl; - std::cout << "max_size: " << mp.max_size() << std::endl; - if (print_content) - { - typename T_MAP::const_iterator it = mp.begin(), ite = mp.end(); - std::cout << std::endl << "Content is:" << std::endl; - for (; it != ite; ++it) - std::cout << "- " << printPair(it, false) << std::endl; - } - std::cout << "###############################################" << std::endl; + typename T_MAP::const_iterator it = mp.begin(), ite = mp.end(); + std::cout << std::endl << "Content is:" << std::endl; + for (; it != ite; ++it) + std::cout << "- " << printPair(it) << std::endl; + std::cout << "-----------------\n"; } void map_tester() { -// std::cout << "----default constructor----" << std::endl; -// ft::map ctnr; -// printSize(ctnr); - -// std::cout << "----copy constructor----" << std::endl; -// ft::map ctnr_copy(ctnr); -// printSize(ctnr_copy); + std::cout << "----default constructor----" << std::endl; + ft::map ctnr; + printSize(ctnr); + for(int i = 0; i < 5; i++) + ctnr.insert(ctnr.begin(), ft::make_pair(i, 5 - i)); + printSize(ctnr); + std::cout << "max_size: " << ctnr.max_size() << std::endl; -// std::cout << "----range constructor----" << std::endl; -// ft::map ctnr2(ctnr.begin(), ctnr.end()); -// printSize(ctnr2); + std::cout << "----copy constructor----" << std::endl; + ft::map ctnr2(ctnr); + printSize(ctnr2); + std::cout << "----range constructor----" << std::endl; + ft::map ctnr3(ctnr.begin()++, ((ctnr.end()--)--)--); + printSize(ctnr3); + // //////////////////////////////////// -// std::cout << "----insert at position + assign constrcutor----" << std::endl; -// ft::map ctnr4(5, 5); -// printSize(ctnr4); -// std::cout << "----insert----\n"; -// ctnr4.insert(ctnr4.begin() + 3, 100); -// printSize(ctnr4); + std::cout << "----insert----\n"; + ctnr3.insert(ctnr3.begin(), ft::make_pair(10, 10)); + ctnr3.insert(ft::make_pair(10, 10)); + ctnr3.insert(ft::make_pair(11, 10)); + printSize(ctnr3); -// std::cout << "----insert fill----\n"; -// ctnr4.insert(ctnr4.begin() + 3, 5, 100); -// printSize(ctnr4); + std::cout << "----insert with already in key ----\n"; + ctnr3.insert(ctnr3.begin(), ctnr3.end()); + printSize(ctnr3); -// std::cout << "----operator equal----\n"; -// ft::map ctnr5; -// ctnr5 = ctnr4; -// printSize(ctnr5); + std::cout << "----operator equal----\n"; + ft::map ctnr4 = ctnr3; + printSize(ctnr4); -// std::cout << "----insert range----\n"; -// ctnr5.insert(ctnr5.begin() + 2, ctnr.begin()++, ctnr.end()--); -// printSize(ctnr5); - -// std::cout << "----erase----\n"; -// ctnr5.erase(ctnr5.end() - 5); -// printSize(ctnr5); + std::cout << "----insert range----\n"; + for(int i = 0; i < 5; i++) + ctnr3.insert(ft::make_pair(i + 11, i + 20)); + printSize(ctnr3); -// std::cout << "----erase range----\n"; -// ctnr5.erase(ctnr5.begin(), ctnr5.end() - 5); -// printSize(ctnr5); + std::cout << "---result (ctrn4)---\n"; + ctnr4.insert(ctnr3.begin(), ctnr3.end()); + printSize(ctnr4); + + std::cout << "----erase position----\n"; + ctnr4.erase(ctnr4.begin()); + printSize(ctnr4); + + std::cout << "----erase key (12)----\n"; + ctnr4.erase(12); + printSize(ctnr4); + + std::cout << "----erase range----\n"; + ctnr4.erase(ctnr4.begin(), (ctnr4.end()--)--); + printSize(ctnr4); -// std::cout << "----swap----\n"; -// ctnr5.swap(ctnr); -// std::cout << "----ctnr----\n"; -// printSize(ctnr); -// std::cout << "----ctnr5----\n"; -// printSize(ctnr5); + std::cout << "----swap----\n"; + printSize(ctnr4); + printSize(ctnr3); + std::cout << "----after swap----\n"; + ctnr4.swap(ctnr3); + printSize(ctnr4); + printSize(ctnr3); -// std::cout << "----clear----\n"; -// ctnr.clear(); -// printSize(ctnr); -// /////////////// + std::cout << "---clear---\n"; + ctnr3.clear(); + printSize(ctnr3); + + std::cout << "---lower_bound---\n"; + printSize(ctnr2); + std::cout << (ctnr2.lower_bound(2))->first << std::endl; + + std::cout << "---upper_bound---\n"; + printSize(ctnr2); + std::cout << (ctnr2.upper_bound(2))->first << std::endl; + + std::cout << "---equal_range---\n"; + printSize(ctnr2); + std::cout << "first= " << ctnr2.equal_range(2).first->first << " second= " << ctnr2.equal_range(2).second->second << std::endl; + + std::cout << "----iterator----\n"; + ft::map::iterator ite = ctnr2.begin(); + printSize(ctnr2); + + ite = ctnr2.begin(); + + std::cout << (++ite)->first << std::endl; + std::cout << (ite++)->first << std::endl; + std::cout << (ite++)->first << std::endl; + std::cout << (++ite)->first << std::endl; + + std::cout << (--ite)->first << std::endl; + std::cout << (ite--)->first << std::endl; + std::cout << (--ite)->first << std::endl; + std::cout << (ite--)->first << std::endl; + + std::cout << "----reverese iterator----\n"; + ft::map::reverse_iterator it2 = ctnr2.rbegin(); + ft::map::reverse_iterator ite2 = ctnr2.rend(); + printSize(ctnr2); + + it2 = ctnr2.rbegin(); + ite2 = ctnr2.rend(); + + std::cout << "----rend---" << std::endl; + std::cout << (--ite2)->first << std::endl; + std::cout << (--ite2)->first << std::endl; + std::cout << (--ite2)->first << std::endl; + std::cout << (ite2--)->first << std::endl; + std::cout << (ite2--)->first << std::endl; + std::cout << (ite2--)->first << std::endl; + + std::cout << "----rbegin---" << std::endl; + std::cout << (++it2)->first << std::endl; + std::cout << (++it2)->first << std::endl; + std::cout << (++it2)->first << std::endl; + std::cout << (it2++)->first << std::endl; + std::cout << (it2++)->first << std::endl; + + std::cout << "----relationnal operator---" << std::endl; + cmp(ctnr, ctnr2); -// std::cout << "----relationnal ope----\n"; -// cmp(ctnr, ctnr4); } void real_map_tester() { + std::cout << "----default constructor----" << std::endl; + std::map ctnr; + printSize(ctnr); + for(int i = 0; i < 5; i++) + ctnr.insert(ctnr.begin(), std::make_pair(i, 5 - i)); + printSize(ctnr); + std::cout << "max_size: " << ctnr.max_size() << std::endl; + std::cout << "----copy constructor----" << std::endl; + std::map ctnr2(ctnr); + printSize(ctnr2); + + std::cout << "----range constructor----" << std::endl; + std::map ctnr3(ctnr.begin()++, ((ctnr.end()--)--)--); + printSize(ctnr3); + +// //////////////////////////////////// + + std::cout << "----insert----\n"; + ctnr3.insert(ctnr3.begin(), std::make_pair(10, 10)); + ctnr3.insert(std::make_pair(10, 10)); + ctnr3.insert(std::make_pair(11, 10)); + printSize(ctnr3); + + std::cout << "----insert with already in key ----\n"; + ctnr3.insert(ctnr3.begin(), ctnr3.end()); + printSize(ctnr3); + + std::cout << "----operator equal----\n"; + std::map ctnr4 = ctnr3; + printSize(ctnr4); + + std::cout << "----insert range----\n"; + for(int i = 0; i < 5; i++) + ctnr3.insert(std::make_pair(i + 11, i + 20)); + printSize(ctnr3); + + std::cout << "---result (ctrn4)---\n"; + ctnr4.insert(ctnr3.begin(), ctnr3.end()); + printSize(ctnr4); + + std::cout << "----erase position----\n"; + ctnr4.erase(ctnr4.begin()); + printSize(ctnr4); + + std::cout << "----erase key (12)----\n"; + ctnr4.erase(12); + printSize(ctnr4); + + std::cout << "----erase range----\n"; + ctnr4.erase(ctnr4.begin(), (ctnr4.end()--)--); + printSize(ctnr4); + + std::cout << "----swap----\n"; + printSize(ctnr4); + printSize(ctnr3); + std::cout << "----after swap----\n"; + ctnr4.swap(ctnr3); + printSize(ctnr4); + printSize(ctnr3); + + std::cout << "---clear---\n"; + ctnr3.clear(); + printSize(ctnr3); + + std::cout << "---lower_bound---\n"; + printSize(ctnr2); + std::cout << (ctnr2.lower_bound(2))->first << std::endl; + + std::cout << "---upper_bound---\n"; + printSize(ctnr2); + std::cout << (ctnr2.upper_bound(2))->first << std::endl; + + std::cout << "---equal_range---\n"; + printSize(ctnr2); + std::cout << "first= " << ctnr2.equal_range(2).first->first << " second= " << ctnr2.equal_range(2).second->second << std::endl; + + std::cout << "----iterator----\n"; + std::map::iterator ite = ctnr2.begin(); + printSize(ctnr2); + + ite = ctnr2.begin(); + + std::cout << (++ite)->first << std::endl; + std::cout << (ite++)->first << std::endl; + std::cout << (ite++)->first << std::endl; + std::cout << (++ite)->first << std::endl; + + std::cout << (--ite)->first << std::endl; + std::cout << (ite--)->first << std::endl; + std::cout << (--ite)->first << std::endl; + std::cout << (ite--)->first << std::endl; + + std::cout << "----reverese iterator----\n"; + std::map::reverse_iterator it2 = ctnr2.rbegin(); + std::map::reverse_iterator ite2 = ctnr2.rend(); + printSize(ctnr2); + + it2 = ctnr2.rbegin(); + ite2 = ctnr2.rend(); + + std::cout << "----rend---" << std::endl; + std::cout << (--ite2)->first << std::endl; + std::cout << (--ite2)->first << std::endl; + std::cout << (--ite2)->first << std::endl; + std::cout << (ite2--)->first << std::endl; + std::cout << (ite2--)->first << std::endl; + std::cout << (ite2--)->first << std::endl; + + std::cout << "----rbegin---" << std::endl; + std::cout << (++it2)->first << std::endl; + std::cout << (++it2)->first << std::endl; + std::cout << (++it2)->first << std::endl; + std::cout << (it2++)->first << std::endl; + std::cout << (it2++)->first << std::endl; + + std::cout << "----relationnal operator---" << std::endl; + cmp(ctnr, ctnr2); } \ No newline at end of file diff --git a/tests/vector_tester.cpp b/tests/vector_tester.cpp index 1ff5ad9..77b824a 100644 --- a/tests/vector_tester.cpp +++ b/tests/vector_tester.cpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/11/29 12:55:23 by apommier #+# #+# */ -/* Updated: 2022/11/29 15:56:25 by apommier ### ########.fr */ +/* Updated: 2022/11/29 17:53:35 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -138,6 +138,34 @@ void vector_tester() std::cout << *it-- << std::endl; std::cout << *--it << std::endl; + std::cout << "----reverese iterator----\n"; + ft::vector::reverse_iterator it2 = ctnr4.rbegin(); + ft::vector::reverse_iterator ite2 = ctnr4.rend(); + + for (int i = 1; it2 != ite2; ++i) + *it2++ = i; + printSize(ctnr4); + + it2 = ctnr4.rbegin(); + ite2 = ctnr4.rend(); + + std::cout << "----rend---" << std::endl; + std::cout << *(--ite2) << std::endl; + std::cout << *(--ite2) << std::endl; + std::cout << *(--ite2) << std::endl; + std::cout << *(ite2--) << std::endl; + std::cout << *(ite2--) << std::endl; + std::cout << *(ite2--) << std::endl; + + std::cout << "----rbegin---" << std::endl; + std::cout << *(++it2) << std::endl; + std::cout << *(++it2) << std::endl; + std::cout << *(++it2) << std::endl; + std::cout << *(it2++) << std::endl; + std::cout << *(it2++) << std::endl; + std::cout << *(it2++) << std::endl; + + std::cout << "----relationnal ope----\n"; cmp(ctnr, ctnr4); @@ -240,6 +268,33 @@ void real_vector_tester() std::cout << *it-- << std::endl; std::cout << *--it << std::endl; + std::cout << "----reverese iterator----\n"; + std::vector::reverse_iterator it2 = ctnr4.rbegin(); + std::vector::reverse_iterator ite2 = ctnr4.rend(); + + for (int i = 1; it2 != ite2; ++i) + *it2++ = i; + printSize_real(ctnr4); + + it2 = ctnr4.rbegin(); + ite2 = ctnr4.rend(); + + std::cout << "----rend---" << std::endl; + std::cout << *(--ite2) << std::endl; + std::cout << *(--ite2) << std::endl; + std::cout << *(--ite2) << std::endl; + std::cout << *(ite2--) << std::endl; + std::cout << *(ite2--) << std::endl; + std::cout << *(ite2--) << std::endl; + + std::cout << "----rbegin---" << std::endl; + std::cout << *(++it2) << std::endl; + std::cout << *(++it2) << std::endl; + std::cout << *(++it2) << std::endl; + std::cout << *(it2++) << std::endl; + std::cout << *(it2++) << std::endl; + std::cout << *(it2++) << std::endl; + std::cout << "----relationnal ope----\n"; cmp(ctnr, ctnr4);