#ifndef LIST_HPP # define LIST_HPP namespace ft { template < class T, class Alloc = allocator > class List { public: List(const allocator_type& alloc = allocator_type()); // List(size_type n, const value_type& val = value_type(), const allocator_type& alloc = allocator_type()); // template // List(InputIterator first, InputIterator last, const allocator_type& alloc = allocator_type()); // List(const list& x); ~List(); // List& operator = (const List& x); // iterators // iterator begin(); // const_iterator begin() const; // iterator end(); // const_iterator end() const; // reverse_iterator rbegin(); // const_reverse_iterator rbegin() const; // reverse_iterator rend(); // const_reverse_iterator rend() const; // capacity bool empty() const; size_type size() const; size_type max_size() const; // element access reference front(); const_reference front() const; reference back(); const_reference back(); // modifiers // template // void assign (InputIterator first, InputIterator last); // void assign (size_type n, const value_type& val); void push_front (const value_type& val); void pop_front(); void push_back (const value_type& val); void pop_back(); // iterator insert (iterator position, const value_type& val); // void insert (iterator position, size_type n, const value_type& val); // template // void insert (iterator position, InputIterator first, InputIterator last); // iterator erase (iterator position); // iterator erase (iterator first, iterator last); // void swap (list& x); // void resize (size_type n, value_type val = value_type()); // void clear(); // operations // void splice (iterator position, list& x); // void splice (iterator position, list& x, iterator i); // void splice (iterator position, list& x, iterator first, iterator last); // void remove (const value_type& val); // template // void remove_if (Predicate pred); // void unique(); // template // void unique (BinaryPredicate binary_pred); // // void merge (list& x); // template // void merge (list& x, Compare comp); // void sort(); // template // void sort (Compare comp); // void reverse(); // observers // allocator_type get_allocator() const; private: class PrivateList { public: PrivateList(const value_type& val); ~PrivateList(); PrivateList *next; T val; } PrivateList *front; PrivateList *back; size_type size; }; } #endif