6#include <initializer_list>
14 template<
typename T,
typename N = UInt_64>
43 Array(std::initializer_list<T> list)
47 for (
auto v = list.begin(); v != list.end(); ++v)
48 data[i++] = std::move(*v);
57 for (N i = 0; i <
size; ++i)
58 this->data[i] =
data[i];
73 for (N i = 0; i <
size; ++i)
102 for (N i = 0; i < array.
size; ++i)
116 data =
new T[list.size];
119 for (
auto v = list.begin(); v != list.end(); ++v)
120 data[i++] = std::move(*v);
131 T* result =
new T[
size + value.
size];
133 for (N i = 0; i <
size; ++i)
134 result[i] = std::move(
data[i]);
136 for (N i = 0; i < value.
size; ++i)
137 result[
size + i] = std::move(value[i]);
167 T* result =
new T[
size + value.size()];
169 for (N i = 0; i <
size; ++i)
170 result[i] = std::move(
data[i]);
173 for (
auto v = value.begin(); v != value.end(); ++v)
174 result[
size + i++] = std::move(*v);
179 size += value.size();
188 T* result =
new T[
size + 1];
190 for (N i = 0; i <
size; ++i)
191 result[i] = std::move(
data[i]);
193 result[
size] = std::move(value);
214 T tmp = std::move(
data[a]);
217 data[b] = std::move(tmp);
223 void Insert(
const N index,
const T value)
226 if (index >
size - 1)
227 newSize =
size + ((index + 1) -
size);
231 T* result =
new T[newSize];
233 for (N i = 0; i < index; ++i)
234 result[i] = std::move(
data[i]);
236 result[index] = std::move(value);
238 for (N i = index; i <
size; ++i)
239 result[i + 1] = std::move(
data[i]);
257 popped = std::move(
data[index]);
259 N newSize =
size - 1;
260 T* result =
new T[newSize];
262 for (N i = 0; i < index; ++i)
263 result[i] = std::move(
data[i]);
265 for (N i = index + 1; i <
size; ++i)
266 result[i - 1] = std::move(
data[i]);
280 T* result =
new T[this->size +
size];
282 for (N i = 0; i < this->size; ++i)
283 result[i] = std::move(this->data[i]);
285 for (N i = 0; i <
size; ++i)
286 result[this->size + i] = value[i];
298 T* result =
new T[
size + value.
size];
300 for (N i = 0; i <
size; ++i)
301 result[i] = std::move(
data[i]);
303 for (N i = 0; i < value.
size; ++i)
304 result[
size + i] = std::move(value[i]);
314 void Push(std::initializer_list<T> value)
316 T* result =
new T[
size + value.size()];
318 for (N i = 0; i <
size; ++i)
319 result[i] = std::move(
data[i]);
322 for (
auto v = value.begin(); v != value.end(); ++v)
323 result[
size + i++] = std::move(*v);
328 size += value.size();
335 T* result =
new T[
size + 1];
337 for (N i = 0; i <
size; ++i)
338 result[i] = std::move(
data[i]);
340 result[
size] = std::move(value);
352 T* result =
new T[--
size];
356 for (N i = 0; i <
size; ++i)
357 result[i] = (T&&)
data[i];
374 N lastIndex =
size - 1;
376 if (index < lastIndex)
377 Swap(index, lastIndex);
400 T* result =
new T[newSize];
402 for (N i = 0; i < newSize && i <
size; ++i)
403 result[i] = std::move(
data[i]);
Array(Array &&array) noexcept
Definition Array.h:61
Array< T, N > & operator=(const Array &array)
Definition Array.h:95
T Pop(const N index)
Definition Array.h:369
Array< T, N > & operator=(Array &&array) noexcept
Definition Array.h:77
T Pop()
Definition Array.h:350
Array(const T *const data, const N size)
Definition Array.h:54
void Push(Array value)
Definition Array.h:296
Array(const N size)
Definition Array.h:36
N Size() const
Definition Array.h:413
void Clear()
Releases the resources of the array.
Definition Array.h:383
Array()
Default members initialization.
Definition Array.h:29
Array & operator+=(Array value)
Definition Array.h:129
Array & operator=(std::initializer_list< T > list)
Definition Array.h:113
T * data
Definition Array.h:18
void Resize(const N newSize)
Definition Array.h:395
Array(const Array &array)
Definition Array.h:70
~Array()
Frees any data created on the heap.
Definition Array.h:23
N size
Definition Array.h:19
bool operator==(const Array &in) const
Definition Array.h:147
Array & operator+=(const T value)
Definition Array.h:186
void Insert(const N index, const T value)
Definition Array.h:223
void Swap(N a, N b) const
Definition Array.h:212
void Push(T value)
Definition Array.h:333
bool operator!=(const Array &in) const
Definition Array.h:155
N End() const
Definition Array.h:420
T Remove(const N index)
Definition Array.h:250
void Push(std::initializer_list< T > value)
Definition Array.h:314
void Push(const T *const value, const N size)
Definition Array.h:278
Array(std::initializer_list< T > list)
Definition Array.h:43
Array & operator+=(std::initializer_list< T > value)
Definition Array.h:165
static bool Compare(const void *a, const void *b, UInt_64 size)
Definition Util.cpp:5