Iros
 
Loading...
Searching...
No Matches
vector_erase.h
Go to the documentation of this file.
1#pragma once
2
9#include "di/util/swap.h"
10
11namespace di::container::vector {
12template<concepts::detail::MutableVector Vec, typename Iter = meta::detail::VectorIterator<Vec>,
13 typename CIter = meta::detail::VectorConstIterator<Vec>>
14constexpr auto erase(Vec& vector, CIter cstart, CIter cend) -> Iter {
15 auto start = vector::iterator(vector, cstart);
17 auto size = vector::size(vector);
18
19 auto count = end - start;
20 auto [old_end, new_end] = container::move(end, vector::end(vector), start);
21
22 container::destroy(new_end, old_end);
23 vector.assume_size(size - count);
24 return start;
25}
26
27template<concepts::detail::MutableVector Vec, typename Iter = meta::detail::VectorIterator<Vec>,
28 typename CIter = meta::detail::VectorConstIterator<Vec>>
29constexpr auto erase(Vec& vector, CIter citerator) -> Iter {
30 return vector::erase(vector, citerator, citerator + 1);
31}
32}
Definition vector_append_container.h:17
constexpr auto end(concepts::detail::ConstantVector auto &vector)
Definition vector_end.h:8
constexpr auto size(concepts::detail::ConstantVector auto const &vector) -> size_t
Definition vector_size.h:7
constexpr auto erase(Vec &vector, CIter cstart, CIter cend) -> Iter
Definition vector_erase.h:14
constexpr auto iterator(Vec &, CIter iterator) -> Iter
Definition vector_iterator.h:13
constexpr auto cend
Definition cend.h:23
constexpr auto move
Definition move.h:38
constexpr auto destroy
Definition destroy.h:35
constexpr auto erase
Definition erase.h:76
constexpr auto count
Definition count.h:37