continued vector

This commit is contained in:
DirtyDuckEUW 2023-02-22 01:00:25 +01:00
parent c4b3d8ac5f
commit b8b078d327
3 changed files with 48 additions and 20 deletions

View file

@ -1,5 +1,4 @@
#pragma once #pragma once
#define DELETE_POINTER(pPointer) \ #define DELETE_POINTER(pPointer) \
if (pPointer != nullptr)\ if (pPointer != nullptr)\
{\ {\

View file

@ -7,33 +7,33 @@ template <class T>
class LSVector class LSVector
{ {
public: public:
LSVector(size_t zSize = 1) LSVector(size_t zSize = 0)
{ {
m_pData = new T[zSize]; m_pData = new T[zSize];
m_zSize = zSize;
m_zCapacity = zSize; m_zCapacity = zSize;
} }
~LSVector() ~LSVector()
{ {
Clear();
} }
T& PushBack(T obj) T& PushBack(T oObj)
{ {
return Insert(oObj, m_zSize);
} }
T& PopBack() void PopBack()
{ {
--m_zSize;
} }
T& Insert(const size_t zPos) T& Insert(T oObj, const size_t zPos)
{ {
m_pData[zPos] = oObj;
} m_zSize++;
return m_pData[zPos];
T& Remove(const size_t zPos)
{
} }
T& At(const size_t zPos) T& At(const size_t zPos)
@ -41,21 +41,35 @@ public:
return m_pData[zPos]; return m_pData[zPos];
} }
void Resize(const size_t zNewSize)
{
T* pOld = m_pData;
m_pData = new T[zNewSize];
memmove_s(m_pData, zNewSize, pOld, m_zSize);
m_zSize = zNewSize;
m_zCapacity = zNewSize;
DELETE_ARRAY(pOld)
}
void Reserve(const size_t zSize) void Reserve(const size_t zSize)
{ {
T* pOld = m_pData; T* pOld = m_pData;
m_pData = new T[zSize]; m_pData = (T*)malloc(zSize * sizeof(T));
memmove_s(m_pData, zSize, pOld, m_zSize); memmove_s(m_pData, zSize, pOld, m_zSize);
m_zSize = zSize; m_zSize = zSize;
m_zCapacity = zSize; m_zCapacity = zSize;
DELETE_ARRAY(pOld); DELETE_ARRAY(pOld)
} }
void Clear() void Clear()
{ {
DELETE_ARRAY(m_pData) DELETE_ARRAY(m_pData)
m_zSize = 0;
m_zCapacity = 0;
} }
size_t Size() const size_t Size() const
@ -80,12 +94,12 @@ public:
LSVector& operator[](const size_t _Pos) LSVector& operator[](const size_t _Pos)
{ {
test.reserve(5);
test.resize(5);
} }
private: private:
std::vector<int> test;
std::vector<int> s;
T* m_pData = nullptr; T* m_pData = nullptr;
size_t m_zSize = 0; size_t m_zSize = 0;
size_t m_zCapacity = 0; size_t m_zCapacity = 0;

File diff suppressed because one or more lines are too long