mirror of
https://github.com/encounter/ph.git
synced 2026-03-30 11:34:37 -07:00
41 lines
914 B
Plaintext
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
|