7#include <initializer_list>
16 template<
typename T,
typename N = UInt_64>
66 for (
auto v = list.begin(); v != list.end(); ++v)
67 data[i++] = std::move(*v);
90 for (N i = 0; i <
size; ++i)
91 this->data[i] =
data[i];
99 for (N i = 0; i <
size; ++i)
127 for (N i = 0; i <
size; ++i)
187 for (N i = 0; i <
size; ++i)
188 result[i] = std::move(std::move(
data[i]));
194 for (
auto v = value.begin(); v != value.end(); ++v)
213 for (N i = 0; i <
size; ++i)
214 result[i] = std::move(
data[i]);
265 for (N i = 0; i < src.
Size() - srcOffset; ++i)
266 data[i + dstOffset] = std::move(src[i + srcOffset]);
273 void Copy(
const N dstOffset,
const T* src,
const N inSize)
275 if (dstOffset + inSize >
size)
278 for (N i = 0; i < inSize; ++i)
279 data[i + dstOffset] = src[i];
287 T tmp = std::move(
data[a]);
290 data[b] = std::move(tmp);
296 void Insert(
const N index,
const T value)
299 if (index >
size - 1)
300 newSize =
size + ((index + 1) -
size);
313 for (N i = 0; i < index; ++i)
314 result[i] = std::move(
data[i]);
316 result[index] = std::move(value);
318 for (N i = index; i <
size; ++i)
319 result[i + 1] = std::move(
data[i]);
326 for (N i = index; i <
size; ++i)
329 data[index] = std::move(value);
345 popped = std::move(
data[index]);
352 for (N i = 0; i < index; ++i)
353 result[i] = std::move(
data[i]);
355 for (N i = index + 1; i <
size; ++i)
356 result[i - 1] = std::move(
data[i]);
366 for (N i = 0; i < index; ++i)
367 result[i] = std::move(
data[i]);
369 for (N i = index + 1; i <
size; ++i)
370 result[i - 1] = std::move(
data[i]);
377 for (N i = index + 1; i <
size; ++i)
406 for (N i = 0; i < this->
size; ++i)
407 result[i] = std::move(
data[i]);
413 for (N i = 0; i <
size; ++i)
414 data[this->size + i] = value[i];
438 for (N i = 0; i <
size; ++i)
439 result[i] = std::move(
data[i]);
445 for (N i = 0; i < value.
size; ++i)
453 void Push(std::initializer_list<T> value)
470 for (N i = 0; i <
size; ++i)
471 result[i] = std::move(
data[i]);
477 for (
auto v = value.begin(); v != value.end(); ++v)
494 for (N i = 0; i <
size; ++i)
495 result[i] = std::move(
data[i]);
520 for (N i = 0; i <
size; ++i)
521 result[i] = std::move(
data[i]);
531 for (N i = 0; i <
size; ++i)
532 result[i] = std::move(
data[i]);
549 N lastIndex =
size - 1;
551 if (index < lastIndex)
552 Swap(index, lastIndex);
577 for (N i = 0; i <
size && i < newSize; ++i)
578 result[i] = std::move(
data[i]);
598 for (N i = 0; i <
size; ++i)
599 result[i] = std::move(
data[i]);
static bool Compare(const void *a, const void *b, UInt_64 size)
Definition: Util.cpp:9
~Vector()
Frees any data created on the heap.
Definition: Vector.h:27
Vector(const T *data, const N size, const N stride)
Definition: Vector.h:74
N End() const
Definition: Vector.h:254
Vector()
Default members initialization.
Definition: Vector.h:33
Vector(const Vector &vec)
Definition: Vector.h:96
T Pop(const N index)
Definition: Vector.h:544
T * data
Definition: Vector.h:23
void Insert(const N index, const T value)
Definition: Vector.h:296
Vector & operator=(const Vector &vec)
Definition: Vector.h:115
Vector(Vector &&vec) noexcept
Definition: Vector.h:103
void Copy(const N dstOffset, Vector< T, N > src, const N srcOffset=0)
Definition: Vector.h:263
Vector(const N size, const N stride)
Definition: Vector.h:41
Vector & operator=(Vector &&vec) noexcept
Definition: Vector.h:133
bool operator==(const Vector &in) const
Definition: Vector.h:152
T Pop()
Definition: Vector.h:506
N RawSize() const
Definition: Vector.h:233
void Swap(N a, N b)
Definition: Vector.h:285
void Clear()
Releases the resources of the vector.
Definition: Vector.h:613
Vector & operator+=(std::initializer_list< T > value)
Definition: Vector.h:170
bool operator!=(const Vector &in) const
Definition: Vector.h:160
void Push(std::initializer_list< T > value)
Definition: Vector.h:453
Vector & operator+=(const T value)
Definition: Vector.h:202
N stride
Definition: Vector.h:22
void Push(Vector< T > value)
Definition: Vector.h:421
N size
Definition: Vector.h:21
void Push(T value)
Definition: Vector.h:483
N rawSize
Definition: Vector.h:20
void Copy(const N dstOffset, const T *src, const N inSize)
Definition: Vector.h:273
void Push(const T *const value, const N size)
Definition: Vector.h:389
N Size() const
Definition: Vector.h:240
Vector(std::initializer_list< T > list, const N stride=5)
Definition: Vector.h:49
void Resize(const N newSize)
Definition: Vector.h:559
T Remove(const N index)
Definition: Vector.h:338
N Stride() const
Definition: Vector.h:247
void ExactSize()
Removes any extra allocated memory.
Definition: Vector.h:586