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)
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);

View File

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

View File

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

View File

@ -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;
@ -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 value_type>() 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<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

View File

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

View File

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

View File

@ -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();

View File

@ -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;
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<int, int> ctnr;
// printSize(ctnr);
// std::cout << "----copy constructor----" << std::endl;
// ft::map<int, int> ctnr_copy(ctnr);
// printSize(ctnr_copy);
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 << "----range constructor----" << std::endl;
// ft::map<int, int> ctnr2(ctnr.begin(), ctnr.end());
// printSize(ctnr2);
std::cout << "----copy constructor----" << std::endl;
ft::map<int, int> ctnr2(ctnr);
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 << "----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<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);
}

View File

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