diff --git a/src/libdramsys/DRAMSys/common/dramExtensions.h b/src/libdramsys/DRAMSys/common/dramExtensions.h index 50258c08..39dda2c0 100644 --- a/src/libdramsys/DRAMSys/common/dramExtensions.h +++ b/src/libdramsys/DRAMSys/common/dramExtensions.h @@ -188,47 +188,25 @@ public: }; template -class ControllerVector +class ControllerVector : private std::vector { -private: - std::vector baseVector; - public: - ControllerVector(size_t size, const ValueType& value) + ControllerVector(std::size_t size, const ValueType& value) : std::vector(size, value) {} + explicit ControllerVector(std::size_t size) : std::vector(size) {} + ControllerVector() : std::vector() {} + + using std::vector::push_back; + using std::vector::begin; + using std::vector::end; + + typename std::vector::const_reference operator[](IndexType index) const { - baseVector = std::vector(size, value); + return std::vector::operator[](index.ID()); } - explicit ControllerVector(size_t size) + typename std::vector::reference operator[](IndexType index) { - baseVector = std::vector(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::iterator begin() - { - return baseVector.begin(); - } - - typename std::vector::iterator end() - { - return baseVector.end(); + return std::vector::operator[](index.ID()); } };