clean and done?
This commit is contained in:
parent
7d9235823b
commit
6655f996b6
@ -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);
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* 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;
|
||||
};
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* 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))
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* 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<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:
|
||||
|
||||
pointer _ptr;
|
||||
@ -51,13 +45,6 @@ namespace ft
|
||||
|
||||
~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
|
||||
{
|
||||
return (random_access_iterator<const value_type>(_ptr));
|
||||
@ -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<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
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* 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<Iter> 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<Iter> tmp = *this;
|
||||
_Ite++;
|
||||
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-----------------
|
||||
//---------------------------------------
|
||||
@ -175,7 +149,7 @@ namespace ft
|
||||
//--------------GET----------------
|
||||
//---------------------------------
|
||||
|
||||
iterator_type base() const { return /*iterator_type*/(_Ite); }
|
||||
iterator_type base() const { return (_Ite); }
|
||||
};
|
||||
|
||||
template<class Ite1, class Ite2>
|
||||
|
||||
@ -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 <class InputIterator>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* 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 <stack>
|
||||
# include <vector>
|
||||
# include <utility>
|
||||
|
||||
void stack_tester();
|
||||
void real_stack_tester();
|
||||
|
||||
@ -6,97 +6,280 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* 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 <typename T>
|
||||
std::string printPair(const T &iterator, bool nl = true, std::ostream &o = std::cout)
|
||||
template <class T_STACK>
|
||||
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 <typename T>
|
||||
std::string printPair(const T &iterator)
|
||||
{
|
||||
std::cout << "key: " << iterator->first << " | value: " << iterator->second;
|
||||
return ("");
|
||||
}
|
||||
|
||||
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 << "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;
|
||||
std::cout << "- " << printPair(it) << std::endl;
|
||||
std::cout << "-----------------\n";
|
||||
}
|
||||
|
||||
void map_tester()
|
||||
{
|
||||
// std::cout << "----default constructor----" << std::endl;
|
||||
// ft::map<int, int> ctnr;
|
||||
// printSize(ctnr);
|
||||
std::cout << "----default constructor----" << std::endl;
|
||||
ft::map<int, int> 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 << "----copy constructor----" << std::endl;
|
||||
// ft::map<int, int> ctnr_copy(ctnr);
|
||||
// printSize(ctnr_copy);
|
||||
std::cout << "----copy constructor----" << std::endl;
|
||||
ft::map<int, int> ctnr2(ctnr);
|
||||
printSize(ctnr2);
|
||||
|
||||
// std::cout << "----range constructor----" << std::endl;
|
||||
// ft::map<int, int> ctnr2(ctnr.begin(), ctnr.end());
|
||||
// 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";
|
||||
// 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<int, int> ctnr5;
|
||||
// ctnr5 = ctnr4;
|
||||
// printSize(ctnr5);
|
||||
std::cout << "----operator equal----\n";
|
||||
ft::map<int, int> ctnr4 = ctnr3;
|
||||
printSize(ctnr4);
|
||||
|
||||
// std::cout << "----insert range----\n";
|
||||
// ctnr5.insert(ctnr5.begin() + 2, ctnr.begin()++, ctnr.end()--);
|
||||
// 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----\n";
|
||||
// ctnr5.erase(ctnr5.end() - 5);
|
||||
// printSize(ctnr5);
|
||||
std::cout << "---result (ctrn4)---\n";
|
||||
ctnr4.insert(ctnr3.begin(), ctnr3.end());
|
||||
printSize(ctnr4);
|
||||
|
||||
// std::cout << "----erase range----\n";
|
||||
// ctnr5.erase(ctnr5.begin(), ctnr5.end() - 5);
|
||||
// printSize(ctnr5);
|
||||
std::cout << "----erase position----\n";
|
||||
ctnr4.erase(ctnr4.begin());
|
||||
printSize(ctnr4);
|
||||
|
||||
// std::cout << "----swap----\n";
|
||||
// ctnr5.swap(ctnr);
|
||||
// std::cout << "----ctnr----\n";
|
||||
// printSize(ctnr);
|
||||
// std::cout << "----ctnr5----\n";
|
||||
// printSize(ctnr5);
|
||||
std::cout << "----erase key (12)----\n";
|
||||
ctnr4.erase(12);
|
||||
printSize(ctnr4);
|
||||
|
||||
// std::cout << "----clear----\n";
|
||||
// ctnr.clear();
|
||||
// printSize(ctnr);
|
||||
// ///////////////
|
||||
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";
|
||||
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()
|
||||
{
|
||||
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);
|
||||
}
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* 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<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";
|
||||
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<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";
|
||||
cmp(ctnr, ctnr4);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user