Files
ph/libs/cpp/include/vector
T
2025-01-19 11:58:47 +01:00

41 lines
914 B
Plaintext

#pragma once
#include <string.h>
namespace std {
template <class T> class vector {
public:
T *mElements;
int mSize;
int mCapacity;
~vector() {
if (mElements != NULL) {
decrease_size(mSize);
delete mElements;
}
}
void push_back(T &value) {
get_new_capacity(1);
append_back(1, &value);
}
T *erase(T *first, T *last) {
if (first != last) {
int bytesToMove = (int) mElements + mSize * sizeof(T) - (int) last;
memmove(first, last, bytesToMove);
mSize -= (int) last - (int) first;
}
return first;
}
private:
void decrease_size(int amount);
int get_new_capacity(int growth);
void append_back(int length, T *items);
};
} // namespace std