From b026bc4ba3e4e07ca1f4d4979f05d3df4442e393 Mon Sep 17 00:00:00 2001 From: kinou-p Date: Tue, 29 Nov 2022 15:52:37 +0100 Subject: [PATCH] vector bi_it --- containers/vector.hpp | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/containers/vector.hpp b/containers/vector.hpp index bbdfb1b..3bd0675 100644 --- a/containers/vector.hpp +++ b/containers/vector.hpp @@ -6,7 +6,7 @@ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/10/12 19:46:32 by apommier #+# #+# */ -/* Updated: 2022/11/29 14:05:18 by apommier ### ########.fr */ +/* Updated: 2022/11/29 15:46:33 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,6 +20,7 @@ # include "./iterators/reverse_iterator.hpp" # include +# include # include # include @@ -323,15 +324,22 @@ class vector //--------Modifiers-------- //------------------------- - template - void assign (InputIterator first, InputIterator last, typename ft::enable_if::value, InputIterator>::type* = 0) + template + void assign(typename ft::enable_if::is_integer, _InputIterator>::type first, _InputIterator last) { + size_type diff = 0; + + for (_InputIterator tmp = first; tmp != last; tmp++) + diff++; + size_type i = 0; + if (_capacity < diff) + i = 1; this->clear(); - while (first < last) - { - push_back(*first); - first++; - } + if (i) + resize(diff); + for (size_type tmp = 0; tmp != diff; tmp++) + _alloc.construct(_tab + tmp, *first++); + _size = diff; } void assign (size_type n, const value_type& val) //fill