From 0146ebcbf13a5b0093d78e2a03c01cafb5eb424a Mon Sep 17 00:00:00 2001 From: hugogogo Date: Wed, 1 Jun 2022 22:05:23 +0200 Subject: [PATCH] working typedef --- headers/ftvector.hpp | 25 ++++++++++++------------- srcs/ftvector.cpp | 36 ++++++++++++++++++------------------ 2 files changed, 30 insertions(+), 31 deletions(-) diff --git a/headers/ftvector.hpp b/headers/ftvector.hpp index eace0eb..b33673e 100644 --- a/headers/ftvector.hpp +++ b/headers/ftvector.hpp @@ -4,12 +4,17 @@ # include "colors.h" # include # include + # include // std::allocator class ftvector { public: + typedef int value_type; + typedef std::allocator allocator_type; + typedef std::size_t size_type; + ftvector(); ftvector( ftvector const & src ); ~ftvector(); @@ -36,20 +41,17 @@ public: * capacity : ************/ // size - // TMP - unsigned int size() const; - // TMP END -// size_type size() const; + size_type size() const; // max_size // size_type max_size() const; // resize // void resize(size_type n, value_type val = value_type()); // capacity - size_type capacity() const; +// size_type capacity() const; // empty // bool empty() const; //reserve -// void reserve(size_type n); + void reserve(size_type n); /****************** * element access : @@ -75,10 +77,7 @@ public: // void assign(InputIterator first, InputIterator last); // void assign(size_type n, const value_type& val); // push_back - // TMP - void push_back(const int & element); - // TMP END -// void push_back(const value_type& val); + void push_back(const value_type & val); // pop_back // void pop_back(); // insert @@ -97,9 +96,9 @@ public: private: - std::size_t _size; - int * _mem_ptr; - std::allocator _allocator; + size_type _size; + value_type * _mem_ptr; + allocator_type _allocator; }; diff --git a/srcs/ftvector.cpp b/srcs/ftvector.cpp index fcc3e95..4cee4ac 100644 --- a/srcs/ftvector.cpp +++ b/srcs/ftvector.cpp @@ -9,9 +9,10 @@ ftvector::ftvector() : _size(0) -, _space(0) { +//, _space(0) +{ // std::cout << COPLIEN_COLOR "ftvector constructor" RESET "\n"; - _allocator = std::allocator(); + _allocator = allocator_type(); return; } @@ -53,42 +54,41 @@ ftvector & ftvector::operator=( ftvector const & rhs ) { * ACCESSORS *********************************************/ -unsigned int ftvector::size() const {return _size;} +ftvector::size_type ftvector::size() const {return _size;} /********************************************* * PUBLIC MEMBER FUNCTIONS *********************************************/ -void ftvector::push_back(const int & element) { - if (_size == _space) - hold_space(1); +void ftvector::push_back(const value_type & element) { +// if (_size == _space) + reserve(1); _allocator.construct(&_mem_ptr[_size], element); _size++; - for (unsigned int i = 0; i < _size; i++) + for (size_type i = 0; i < _size; i++) std::cout << _mem_ptr[i] << "\n"; std::cout << "\n"; - } /********************************************* * PRIVATE MEMBER FUNCTIONS *********************************************/ -void hold_space(std::size_t add_space) { +void ftvector::reserve(size_type add_space) { if (add_space == 0) return ; - int * tmp_ptr; - - if (_space > 0 && add_space == 1) - { - add_space = _space * 2; - } - - tmp_ptr = _allocator.allocate(add_space); - // _mem_ptr = _allocator.allocate(add_space); +// int * tmp_ptr; +// +// if (_space > 0 && add_space == 1) +// { +// add_space = _space * 2; +// } +// +// tmp_ptr = _allocator.allocate(add_space); + _mem_ptr = _allocator.allocate(15); } /*********************************************