18 #ifndef RAUL_ARRAY_HPP
19 #define RAUL_ARRAY_HPP
24 #include "Deletable.hpp"
40 explicit Array(
size_t size = 0) : _size(size), _elems(NULL) {
45 Array(
size_t size, T initial_value) : _size(size), _elems(NULL) {
48 for (
size_t i = 0; i < size; ++i)
49 _elems[i] = initial_value;
54 assert(contents.size() >= size);
56 for (
size_t i = 0; i < std::min(size, contents.size()); ++i)
57 _elems[i] = contents[i];
60 Array(
size_t size,
const Array<T>& contents, T initial_value=T()) : _size(size) {
62 const size_t end = std::min(size, contents.size());
63 for (
size_t i = 0; i < end; ++i)
64 _elems[i] = contents[i];
65 for (
size_t i = end; i < size; ++i)
66 _elems[i] = initial_value;
73 virtual void alloc(
size_t num_elems) {
74 assert(num_elems > 0);
79 _elems =
new T[num_elems];
82 virtual void alloc(
size_t num_elems, T initial_value) {
83 assert(num_elems > 0);
88 _elems =
new T[num_elems];
89 for (
size_t i = 0; i < _size; ++i)
90 _elems[i] = initial_value;
93 inline size_t size()
const {
return _size; }
95 inline T& operator[](
size_t i)
const { assert(i < _size);
return _elems[i]; }
97 inline T& at(
size_t i)
const { assert(i < _size);
return _elems[i]; }
107 #endif // RAUL_ARRAY_HPP