aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--list.cpp0
-rw-r--r--list.hpp74
-rw-r--r--stack.hpp29
-rw-r--r--vector.hpp5
4 files changed, 99 insertions, 9 deletions
diff --git a/list.cpp b/list.cpp
deleted file mode 100644
index e69de29..0000000
--- a/list.cpp
+++ /dev/null
diff --git a/list.hpp b/list.hpp
index aaff3e8..c8645b4 100644
--- a/list.hpp
+++ b/list.hpp
@@ -1,12 +1,78 @@
#ifndef LIST_HPP
# define LIST_HPP
-template < class T, class Alloc = allocator<T> >
-class list
+namespace ft
{
+ template < class T, class Alloc = allocator<T> >
+ class list
+ {
+ public:
+ bool empty() const
+ {
+ return front == nullptr;
+ }
+ size_type size() const
+ {
+ return size;
+ }
+ reference front()
+ {
+ return *front;
+ }
+ reference back()
+ {
+ return *back;
+ }
+ void push_front (const value_type& val)
+ {
+ t_inner_list *nfront = new t_inner_list;
+ nfront->content = val;
+ nfront->next = front;
+ front = nfront;
+ if (back == nullptr)
+ back = front;
+ size++;
+ }
+ void pop_front()
+ {
+ t_inner_list *nfront = front->next;
+ if (nfront == nullptr)
+ back = nullptr;
+ ~T(front->content);
+ delete front;
+ front = nfront;
+ size--;
+ }
+ void push_back (const value_type& val)
+ {
+ t_inner_list *nback = new t_inner_list;
+ nback->content = val;
+ if (back == nullptr)
+ {
+ back = nback;
+ front = back;
+ return;
+ }
+ back->next = nback;
+ back = nback;
+ size++;
+ }
+ void pop_back()
+ {
- t_list *head;
-};
+ }
+
+ private:
+ typedef struct
+ {
+ t_inner_list *next;
+ T content;
+ } t_inner_list;
+ t_inner_list *front;
+ t_inner_list *back;
+ size_type size;
+ };
+}
#endif
diff --git a/stack.hpp b/stack.hpp
new file mode 100644
index 0000000..64bfc66
--- /dev/null
+++ b/stack.hpp
@@ -0,0 +1,29 @@
+#ifndef STACK_HPP
+# define STACK_HPP
+
+# include "vector.hpp"
+
+namespace ft
+{
+ template <class T, class Container = deque<T> >
+ class stack : public vector
+ {
+ public:
+ explicit stack (const container_type& ctnr = container_type());
+ value_type& top()
+ {
+ return back();
+ }
+ void push (const value_type& val)
+ {
+ push_back(val);
+ }
+ void pop()
+ {
+ pop_back();
+ }
+ };
+}
+
+#endif
+
diff --git a/vector.hpp b/vector.hpp
index 98038c2..0f21995 100644
--- a/vector.hpp
+++ b/vector.hpp
@@ -96,11 +96,6 @@ namespace ft
template <class InputIterator>
void insert (iterator position, InputIterator first, InputIterator last);
-
-
-
-
-