Inherit privately from std::vector.
This commit is contained in:
@@ -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());
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user