contienus previous commit

This commit is contained in:
IMback
2018-10-08 21:10:35 +02:00
parent 445b60985f
commit 4ae82c698c
6 changed files with 99 additions and 120 deletions

View File

@ -1,6 +1,7 @@
#pragma once
#include <stdint.h>
template<typename T, std::size_t size> class SVector;
template<typename T, size_t size> class SVector
{
private:
size_t stored = 0;
@ -34,31 +35,32 @@ public:
return array[stored];
}
bool empty()
bool empty() const
{
return stored == 0 ? true : false;
}
size_t size();
size_t count() const
{
return stored;
}
constexpr size_t maxSize()
constexpr size_t maxSize() const
{
return std::array::size();
return size;
}
size_t remainingCapacity()
size_t remainingCapacity() const
{
return std::array::size() - stored;
return size - stored;
}
bool push_back(const T in)
{
if( remainingCapacity() != 0)
{
std::array::operator[](stored) = in;
array[stored] = in;
++stored;
return true;
}
else return false;
@ -67,9 +69,14 @@ public:
bool erase(size_t position)
{
if(position > stored) return false;
if constexpr( std::is_class<T> ) array[position].~T();
array[position].~T();
--stored;
for( size_t i = position; i < stored ) array[i] = array[i+1];
for( size_t i = position; i < stored; i++ ) array[i] = array[i+1];
return true;
}
}
void clear()
{
stored = 0;
}
};