Skip to content

Commit ab05daa

Browse files
author
Marouane Ougnou
committed
Pushing
1 parent 9c9d16f commit ab05daa

File tree

2 files changed

+31
-9
lines changed

2 files changed

+31
-9
lines changed

main.cpp

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ int main()
5656

5757

5858

59-
ft::map<int, int> m;
60-
ft::map<int, int>::iterator it;
61-
ft::map<int, int>::Node *tmp;
59+
std::map<int, int> m;
60+
std::map<int, int>::iterator it;
61+
//std::map<int, int>::Node *tmp;
6262
////ft::pair<ft::map<int, int>::iterator, bool> ret;
6363
//ft::map<int, int>::const_iterator c_ob(it);
6464
//ft::pair<ft::map<int, int>::iterator, ft::map<int, int>::iterator> ret;
@@ -75,8 +75,10 @@ int main()
7575
//! Root Node changes when Left right rotation happens
7676
//! Problem in END()
7777

78+
//! Fix Predecessor in --it
79+
7880
m[100] = 2;
79-
m[87] = 2;
81+
//m[87] = 2;
8082
m[30] = 2;
8183
m[47] = 2;
8284
m[1] = 2;
@@ -87,17 +89,24 @@ int main()
8789
m[6] = 2;
8890

8991
//m._node.root = _node.root->parent;
90-
it = m.begin();
91-
for (int i = 0; i < m.size(); i++)
92+
it = m.end();
93+
--it;
94+
//for (int i = 0; i < m.size(); i++)
95+
//{
96+
//std::cout << it->first << std::endl;
97+
//++it;
98+
//}
99+
100+
for (;it != m.begin(); --it)
92101
{
93102
std::cout << it->first << std::endl;
94-
++it;
103+
//++it;
95104
}
96105

97106
//tmp = m._node.searchNode(m._node.root, 30);
98107

99108
//tmp = m._node.root;
100-
//std::cout << tmp->left->left->left->data.first << std::endl;
109+
//std::cout << tmp->parent->data.first << std::endl;
101110
//std::cout << "it->first = " << it->first << std::endl;
102111
//m.erase(4);
103112

map_iterator.hpp

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,12 @@ namespace ft
5353

5454
map_iterator& operator++()
5555
{
56+
57+
if (ptr == ptr->findLargest(root))
58+
{
59+
ptr = NULL;
60+
return (*this);
61+
}
5662
if (ptr->right)
5763
{
5864
ptr = ptr->right;
@@ -81,10 +87,17 @@ namespace ft
8187
}
8288
map_iterator& operator--()
8389
{
90+
if (ptr && ptr == ptr->findSmallest(root))
91+
{
92+
ptr = NULL;
93+
return (*this);
94+
}
8495
if (!ptr && root)
8596
ptr = root->findLargest(root);
8697
else
87-
ptr = ptr->parent;
98+
ptr = ptr->inorderPredecessor(ptr);
99+
100+
//ptr = ptr->parent;
88101
return (*this);
89102
}
90103
map_iterator operator--(int)

0 commit comments

Comments
 (0)