sequencer
vector.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <vector>
4 
5 namespace sequencer
6 {
7  template < class T >
8  class vector
9  {
10  public:
11  using vec_t = std::vector< T >;
12  using size_type = typename vec_t::size_type;
13  using value_type = typename vec_t::value_type;
14 
15  vector( size_type max_size, size_type initial_size, T default_value = T{} )
16  : vec_( max_size, default_value ), size_{initial_size}
17  {
18  }
19 
20  explicit vector( size_type max_size, T default_value = T{} )
21  : vector{max_size, max_size, default_value}
22  {
23  }
24 
25  bool resize( size_type size ) noexcept
26  {
27  if ( size > max_size() )
28  {
29  return false;
30  }
31 
32  size_ = size;
33  }
34 
35  size_type size() const noexcept
36  {
37  return size_;
38  }
39 
40  constexpr size_type max_size() const noexcept
41  {
42  return vec_.size();
43  }
44 
45  auto& operator[]( size_type i ) noexcept
46  {
47  return vec_[ i ];
48  }
49 
50  const auto& operator[]( size_type i ) const noexcept
51  {
52  return vec_[ i ];
53  }
54 
55  auto begin() noexcept
56  {
57  return vec_.begin();
58  }
59 
60  auto begin() const noexcept
61  {
62  return vec_.begin();
63  }
64 
65  auto end() noexcept
66  {
67  return begin() + size();
68  }
69 
70  auto end() const noexcept
71  {
72  return begin() + size();
73  }
74 
75  private:
76  vec_t vec_;
77  size_type size_{0};
78  };
79 } // namespace sequencer
std::vector< Step > vec_t
Definition: vector.hpp:11
size_type size() const noexcept
Definition: vector.hpp:35
bool resize(size_type size) noexcept
Definition: vector.hpp:25
vector(size_type max_size, size_type initial_size, T default_value=T{})
Definition: vector.hpp:15
Definition: vector.hpp:8
constexpr size_type max_size() const noexcept
Definition: vector.hpp:40
auto begin() noexcept
Definition: vector.hpp:55
auto begin() const noexcept
Definition: vector.hpp:60
typename vec_t::value_type value_type
Definition: vector.hpp:13
auto end() noexcept
Definition: vector.hpp:65
typename vec_t::size_type size_type
Definition: vector.hpp:12
vector(size_type max_size, T default_value=T{})
Definition: vector.hpp:20
auto end() const noexcept
Definition: vector.hpp:70
const auto & operator[](size_type i) const noexcept
Definition: vector.hpp:50
auto & operator[](size_type i) noexcept
Definition: vector.hpp:45