Inherit privately from std::vector.

This commit is contained in:
Lukas Steiner
2023-06-26 16:32:39 +02:00
parent 413921f420
commit 4e0891affb

View File

@@ -188,47 +188,25 @@ public:
};
template<typename IndexType, typename ValueType>
class ControllerVector
class ControllerVector : private std::vector<ValueType>
{
private:
std::vector<ValueType> baseVector;
public:
ControllerVector(size_t size, const ValueType& value)
ControllerVector(std::size_t size, const ValueType& value) : std::vector<ValueType>(size, value) {}
explicit ControllerVector(std::size_t size) : std::vector<ValueType>(size) {}
ControllerVector() : std::vector<ValueType>() {}
using std::vector<ValueType>::push_back;
using std::vector<ValueType>::begin;
using std::vector<ValueType>::end;
typename std::vector<ValueType>::const_reference operator[](IndexType index) const
{
baseVector = std::vector<ValueType>(size, value);
return std::vector<ValueType>::operator[](index.ID());
}
explicit ControllerVector(size_t size)
typename std::vector<ValueType>::reference operator[](IndexType index)
{
baseVector = std::vector<ValueType>(size);
}
ControllerVector() = default;
const ValueType& operator[](IndexType index) const
{
return baseVector[index.ID()];
}
ValueType& operator[](IndexType index)
{
return baseVector[index.ID()];
}
void push_back(ValueType&& value)
{
baseVector.push_back(std::move(value));
}
typename std::vector<ValueType>::iterator begin()
{
return baseVector.begin();
}
typename std::vector<ValueType>::iterator end()
{
return baseVector.end();
return std::vector<ValueType>::operator[](index.ID());
}
};