clean and done?

This commit is contained in:
kinou-p 2022-11-29 19:10:30 +01:00
parent 7d9235823b
commit 6655f996b6
9 changed files with 307 additions and 175 deletions

View File

@ -71,12 +71,6 @@ class bidirectionnal_iterator
else if (!lhs._node || !rhs._node) else if (!lhs._node || !rhs._node)
return (false); return (false);
return (lhs._node == rhs._node); 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) friend bool operator!=(const bidirectionnal_iterator &rhs, const bidirectionnal_iterator &lhs)
@ -86,12 +80,6 @@ class bidirectionnal_iterator
else if (!lhs._node || !rhs._node) else if (!lhs._node || !rhs._node)
return (true); return (true);
return (lhs._node != rhs._node); 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); } reference operator*() { return (_node->data); }
@ -102,8 +90,6 @@ class bidirectionnal_iterator
bidirectionnal_iterator &operator++() { bidirectionnal_iterator &operator++() {
//std::cout << "end == "<< _end << std::endl;
//std::cout << "node == "<< _node << std::endl;
if (_node != _end) if (_node != _end)
_node = successor(_node); _node = successor(_node);
return (*this); return (*this);

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */ /* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/11/19 05:07:29 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::iterator_category iterator_category;
typedef typename Iterator::value_type value_type; typedef typename Iterator::value_type value_type;
typedef typename Iterator::difference_type difference_type; typedef typename Iterator::difference_type difference_type;
//typedef typename difference_type distance_type;
typedef typename Iterator::pointer pointer; typedef typename Iterator::pointer pointer;
typedef typename Iterator::reference reference; typedef typename Iterator::reference reference;
}; };

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */ /* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/11/28 14:58:42 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) { bool lexicographical_compare (InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, Compare comp) {
while (first1 != last1) while (first1 != last1)
{ {
std::cout << "i serve\n" << std::endl;
if (comp(*first1, *first2)) if (comp(*first1, *first2))
return true; return true;
if (comp(*first2, *first1)) if (comp(*first2, *first1))

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */ /* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/10/30 16:14:35 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 T& reference;
typedef random_access_iterator iterator_category; typedef random_access_iterator iterator_category;
// typedef typename ft::iterator_traits<T>::iterator_category iterator_category;
// typedef typename ft::iterator_traits<T>::value_type value_type;
// typedef typename ft::iterator_traits<T>::difference_type difference_type;
// typedef typename ft::iterator_traits<T>::pointer pointer;
// typedef typename ft::iterator_traits<T>::reference reference;
private: private:
pointer _ptr; pointer _ptr;
@ -50,13 +44,6 @@ namespace ft
random_access_iterator(const random_access_iterator &cpy) {*this = cpy;} random_access_iterator(const random_access_iterator &cpy) {*this = cpy;}
~random_access_iterator(){} ~random_access_iterator(){}
// random_access_iterator &operator=(const random_access_iterator &cpy)
// {
// _ptr = cpy._ptr;
// return (*this);
// }
operator random_access_iterator<const value_type>() const operator random_access_iterator<const value_type>() const
{ {
@ -72,29 +59,18 @@ namespace ft
return (*this); return (*this);
} }
// random_access_iterator &operator=(pointer &ptr)
// {
// _ptr = ptr;
// return (*this);
// }
//--------------------------------------- //---------------------------------------
//-------------INCREMENTERS-------------- //-------------INCREMENTERS--------------
//--------------------------------------- //---------------------------------------
random_access_iterator &operator ++() random_access_iterator &operator ++()
{ {
//std::cout << "operandom ++\n";
_ptr++; _ptr++;
return (*this); return (*this);
} }
random_access_iterator operator ++(int) random_access_iterator operator ++(int)
{ {
//std::cout << "operandom 1 ++\n";
random_access_iterator tmp(*this); random_access_iterator tmp(*this);
++(*this); ++(*this);
return (tmp); return (tmp);
@ -102,14 +78,12 @@ namespace ft
random_access_iterator &operator --() random_access_iterator &operator --()
{ {
//std::cout << "operandom --\n";
_ptr--; _ptr--;
return (*this); return (*this);
} }
random_access_iterator operator --(int) random_access_iterator operator --(int)
{ {
//std::cout << "operandom 1 --\n";
random_access_iterator tmp(*this); random_access_iterator tmp(*this);
--(*this); --(*this);
return (tmp); return (tmp);
@ -123,7 +97,6 @@ namespace ft
reference operator *() const { return (*_ptr); } reference operator *() const { return (*_ptr); }
pointer operator ->() { return (_ptr); } pointer operator ->() { return (_ptr); }
pointer operator ->() const { 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)); } 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 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 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 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) random_access_iterator &operator +=(difference_type nbr)
{ {
@ -163,12 +134,6 @@ namespace ft
//-------------COMPARAISON--------------- //-------------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); } 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); }
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<typename _Ite>
// bool operator ==(const random_access_iterator<_Ite> &a, const random_access_iterator<_Ite> &b) { return (a._ptr == b._ptr); }
// template<typename _Ite>
// bool operator !=(const random_access_iterator<_Ite> &a, const random_access_iterator<_Ite> &b) { return (a._ptr != b._ptr); }
// template<typename _Ite>
// bool operator <(const random_access_iterator<_Ite> &a, const random_access_iterator<_Ite> &b) { return (a._ptr < b._ptr); }
// template<typename _Ite>
// bool operator >(const random_access_iterator<_Ite> &a, const random_access_iterator<_Ite> &b) { return (a._ptr > b._ptr); }
// template<typename _Ite>
// bool operator <=(const random_access_iterator<_Ite> &a, const random_access_iterator<_Ite> &b) { return (a._ptr <= b._ptr); }
// template<typename _Ite>
// bool operator >=(const random_access_iterator<_Ite> &a, const random_access_iterator<_Ite> &b) { return (a._ptr >= b._ptr); }
} }
// template <typename U>
// ft::random_access_iterator<U> operator +(std::ptrdiff_t const nbr, ft::random_access_iterator<U> const& rhs)
// {
// return (rhs + nbr);
// } // n + a
// template<class _Iterator>
// 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 #endif

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */ /* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/11/19 05:14:31 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++() reverse_iterator& operator++()
{ {
//std::cout << "ope0 ++\n";
--_Ite; --_Ite;
return (*this); return (*this);
} }
reverse_iterator operator++(int) reverse_iterator operator++(int)
{ {
//std::cout << "ope ++\n";
reverse_iterator<Iter> tmp = *this; reverse_iterator<Iter> tmp = *this;
_Ite--; _Ite--;
return (tmp); return (tmp);
@ -78,41 +76,17 @@ namespace ft
reverse_iterator& operator--() reverse_iterator& operator--()
{ {
//std::cout << "ope0 --\n";
++_Ite; ++_Ite;
return (*this); return (*this);
} }
reverse_iterator operator--(int) reverse_iterator operator--(int)
{ {
//std::cout << "ope --\n";
reverse_iterator<Iter> tmp = *this; reverse_iterator<Iter> tmp = *this;
_Ite++; _Ite++;
return (tmp); return (tmp);
} }
// reverse_iterator& operator++() {
// --_Ite;
// return (*this);
// }
// reverse_iterator operator++(int) {
// reverse_iterator<Iter> tmp = *this;
// _Ite--;
// return (tmp);
// }
// reverse_iterator& operator--() {
// ++_Ite;
// return (*this);
// }
// reverse_iterator operator--(int) {
// reverse_iterator<Iter> tmp = *this;
// _Ite++;
// return (tmp);
// }
//--------------------------------------- //---------------------------------------
//----------------ADRESS----------------- //----------------ADRESS-----------------
//--------------------------------------- //---------------------------------------
@ -175,7 +149,7 @@ namespace ft
//--------------GET---------------- //--------------GET----------------
//--------------------------------- //---------------------------------
iterator_type base() const { return /*iterator_type*/(_Ite); } iterator_type base() const { return (_Ite); }
}; };
template<class Ite1, class Ite2> template<class Ite1, class Ite2>

View File

@ -267,7 +267,6 @@ class map
return (ft::make_pair(find, false)); return (ft::make_pair(find, false));
NodePtr pt = newNode(val.first, val.second); NodePtr pt = newNode(val.first, val.second);
insert(pt); insert(pt);
//iterator ret = find(val.first);
_size++; _size++;
return (ft::make_pair(iterator(_root, _end, pt), true)); return (ft::make_pair(iterator(_root, _end, pt), true));
} }
@ -280,7 +279,6 @@ class map
_size++; _size++;
iterator ret = find(val.first); iterator ret = find(val.first);
return (ret); return (ret);
//return (iterator(_root, _end, pt));
} }
template <class InputIterator> template <class InputIterator>

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */ /* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/10/12 19:46:33 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 <map> # include <map>
# include <stack> # include <stack>
# include <vector> # include <vector>
# include <utility>
void stack_tester(); void stack_tester();
void real_stack_tester(); void real_stack_tester();

View File

@ -6,97 +6,280 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */ /* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/11/29 12:55:17 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" #include "../ft_containers.hpp"
template <typename T> template <class T_STACK>
std::string printPair(const T &iterator, bool nl = true, std::ostream &o = std::cout) void cmp(const T_STACK &lhs, const T_STACK &rhs)
{ {
o << "key: " << iterator->first << " | value: " << iterator->second; std::cout << "== : " << (lhs == rhs) << " | != : " << (lhs != rhs) << std::endl;
if (nl) std::cout << "< : " << (lhs < rhs) << " | <= : " << (lhs <= rhs) << std::endl;
o << std::endl; std::cout << "> : " << (lhs > rhs) << " | >= : " << (lhs >= rhs) << std::endl;
}
template <typename T>
std::string printPair(const T &iterator)
{
std::cout << "key: " << iterator->first << " | value: " << iterator->second;
return (""); return ("");
} }
template <typename T_MAP> template <typename T_MAP>
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 << "size: " << mp.size() << std::endl;
std::cout << "max_size: " << mp.max_size() << std::endl; typename T_MAP::const_iterator it = mp.begin(), ite = mp.end();
if (print_content) std::cout << std::endl << "Content is:" << std::endl;
{ for (; it != ite; ++it)
typename T_MAP::const_iterator it = mp.begin(), ite = mp.end(); std::cout << "- " << printPair(it) << std::endl;
std::cout << std::endl << "Content is:" << std::endl; std::cout << "-----------------\n";
for (; it != ite; ++it)
std::cout << "- " << printPair(it, false) << std::endl;
}
std::cout << "###############################################" << std::endl;
} }
void map_tester() void map_tester()
{ {
// std::cout << "----default constructor----" << std::endl; std::cout << "----default constructor----" << std::endl;
// ft::map<int, int> ctnr; ft::map<int, int> ctnr;
// printSize(ctnr); printSize(ctnr);
for(int i = 0; i < 5; i++)
// std::cout << "----copy constructor----" << std::endl; ctnr.insert(ctnr.begin(), ft::make_pair(i, 5 - i));
// ft::map<int, int> ctnr_copy(ctnr); printSize(ctnr);
// printSize(ctnr_copy); std::cout << "max_size: " << ctnr.max_size() << std::endl;
// std::cout << "----range constructor----" << std::endl; std::cout << "----copy constructor----" << std::endl;
// ft::map<int, int> ctnr2(ctnr.begin(), ctnr.end()); ft::map<int, int> ctnr2(ctnr);
// printSize(ctnr2); printSize(ctnr2);
std::cout << "----range constructor----" << std::endl;
ft::map<int, int> ctnr3(ctnr.begin()++, ((ctnr.end()--)--)--);
printSize(ctnr3);
// //////////////////////////////////// // ////////////////////////////////////
// std::cout << "----insert at position + assign constrcutor----" << std::endl;
// ft::map<int, int> ctnr4(5, 5);
// printSize(ctnr4);
// std::cout << "----insert----\n"; std::cout << "----insert----\n";
// ctnr4.insert(ctnr4.begin() + 3, 100); ctnr3.insert(ctnr3.begin(), ft::make_pair(10, 10));
// printSize(ctnr4); ctnr3.insert(ft::make_pair(10, 10));
ctnr3.insert(ft::make_pair(11, 10));
printSize(ctnr3);
// std::cout << "----insert fill----\n"; std::cout << "----insert with already in key ----\n";
// ctnr4.insert(ctnr4.begin() + 3, 5, 100); ctnr3.insert(ctnr3.begin(), ctnr3.end());
// printSize(ctnr4); printSize(ctnr3);
// std::cout << "----operator equal----\n"; std::cout << "----operator equal----\n";
// ft::map<int, int> ctnr5; ft::map<int, int> ctnr4 = ctnr3;
// ctnr5 = ctnr4; printSize(ctnr4);
// printSize(ctnr5);
// std::cout << "----insert range----\n"; std::cout << "----insert range----\n";
// ctnr5.insert(ctnr5.begin() + 2, ctnr.begin()++, ctnr.end()--); for(int i = 0; i < 5; i++)
// printSize(ctnr5); ctnr3.insert(ft::make_pair(i + 11, i + 20));
printSize(ctnr3);
// std::cout << "----erase----\n";
// ctnr5.erase(ctnr5.end() - 5);
// printSize(ctnr5);
// std::cout << "----erase range----\n"; std::cout << "---result (ctrn4)---\n";
// ctnr5.erase(ctnr5.begin(), ctnr5.end() - 5); ctnr4.insert(ctnr3.begin(), ctnr3.end());
// printSize(ctnr5); 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"; std::cout << "----swap----\n";
// ctnr5.swap(ctnr); printSize(ctnr4);
// std::cout << "----ctnr----\n"; printSize(ctnr3);
// printSize(ctnr); std::cout << "----after swap----\n";
// std::cout << "----ctnr5----\n"; ctnr4.swap(ctnr3);
// printSize(ctnr5); printSize(ctnr4);
printSize(ctnr3);
// std::cout << "----clear----\n"; std::cout << "---clear---\n";
// ctnr.clear(); ctnr3.clear();
// printSize(ctnr); 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<int, int>::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<int, int>::reverse_iterator it2 = ctnr2.rbegin();
ft::map<int, int>::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() void real_map_tester()
{ {
std::cout << "----default constructor----" << std::endl;
std::map<int, int> 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<int, int> ctnr2(ctnr);
printSize(ctnr2);
std::cout << "----range constructor----" << std::endl;
std::map<int, int> 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<int, int> 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<int, int>::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<int, int>::reverse_iterator it2 = ctnr2.rbegin();
std::map<int, int>::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);
} }

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */ /* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/11/29 12:55:23 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 << *--it << std::endl; std::cout << *--it << std::endl;
std::cout << "----reverese iterator----\n";
ft::vector<int>::reverse_iterator it2 = ctnr4.rbegin();
ft::vector<int>::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"; std::cout << "----relationnal ope----\n";
cmp(ctnr, ctnr4); cmp(ctnr, ctnr4);
@ -240,6 +268,33 @@ void real_vector_tester()
std::cout << *it-- << std::endl; std::cout << *it-- << std::endl;
std::cout << *--it << std::endl; std::cout << *--it << std::endl;
std::cout << "----reverese iterator----\n";
std::vector<int>::reverse_iterator it2 = ctnr4.rbegin();
std::vector<int>::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"; std::cout << "----relationnal ope----\n";
cmp(ctnr, ctnr4); cmp(ctnr, ctnr4);