From 62bb5a78215597890cbfd642387f97334fb4a6ec Mon Sep 17 00:00:00 2001 From: kdx Date: Wed, 11 Jan 2023 12:21:48 +0100 Subject: compile! --- .gitignore | 1 + vector.hpp | 38 ++++++++++++++++++++++++++++++++++---- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index d7756c2..1fb08e4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ a.out *.o +containers_test/ diff --git a/vector.hpp b/vector.hpp index a0f8adc..6c7143f 100644 --- a/vector.hpp +++ b/vector.hpp @@ -1,5 +1,6 @@ #pragma once #include +#include namespace ft { template < @@ -22,6 +23,7 @@ namespace ft { size_type _size; size_type _capacity; T *_data; + allocator_type _alloc; public: /* constructor */ vector(); @@ -113,10 +115,38 @@ namespace ft { const vector& rhs); template - vector::vector() + vector::vector() : _data(NULL) { - _size = 0; - _capacity = 0; - _data = NULL; + vector(size_type(0), 0, allocator_type()); + } + template + vector::vector(const Alloc& alloc) : _data(NULL) + { + vector(size_type(0), 0, alloc); + } + template + vector::vector(size_type count, const T& value, + const Alloc& alloc) : _data(NULL) + { + _alloc = alloc; + _size = count; + _capacity = count; + /* TODO check error */ + if (count > 0) + _data = _alloc.allocate(count); + for (size_type i = 0; i < count; i++) + _alloc.construct(_data + i, value); + } + template + vector::~vector() + { + if (_data != NULL) { + for (size_type i = 0; i < _size; i++) + _alloc.destroy(_data + i); + _alloc.deallocate(_data, _capacity); + _size = 0; + _capacity = 0; + _data = NULL; + } } } -- cgit v1.2.3