continued vector
This commit is contained in:
parent
c4b3d8ac5f
commit
b8b078d327
3 changed files with 48 additions and 20 deletions
|
@ -1,5 +1,4 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define DELETE_POINTER(pPointer) \
|
#define DELETE_POINTER(pPointer) \
|
||||||
if (pPointer != nullptr)\
|
if (pPointer != nullptr)\
|
||||||
{\
|
{\
|
||||||
|
|
|
@ -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
Loading…
Add table
Add a link
Reference in a new issue