2023-12-03 13:09:16 +03:00
|
|
|
#pragma once
|
|
|
|
|
|
2023-09-17 22:13:42 +03:00
|
|
|
#include <stdio.h>
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
#include <string.h>
|
2023-12-03 13:09:16 +03:00
|
|
|
|
2023-09-17 22:13:42 +03:00
|
|
|
template <class T>
|
|
|
|
|
class Array {
|
|
|
|
|
protected:
|
2023-12-03 13:09:16 +03:00
|
|
|
long length;
|
2023-09-17 22:13:42 +03:00
|
|
|
T** elements;
|
|
|
|
|
public:
|
2023-12-03 13:09:16 +03:00
|
|
|
Array() {
|
|
|
|
|
length = 0;
|
|
|
|
|
elements = NULL;
|
2023-09-17 22:13:42 +03:00
|
|
|
}
|
2023-12-03 13:09:16 +03:00
|
|
|
virtual ~Array() {
|
|
|
|
|
if (elements != NULL) {
|
|
|
|
|
for (long i = 0; i < length; ++i)
|
|
|
|
|
delete elements[i];
|
|
|
|
|
delete[] elements;
|
2023-09-17 22:13:42 +03:00
|
|
|
}
|
|
|
|
|
}
|
2023-12-03 13:09:16 +03:00
|
|
|
void add(T* new_line) {
|
|
|
|
|
T** buf = new T * [length + 1];
|
|
|
|
|
for (long i = 0; i < length; ++i) {
|
|
|
|
|
buf[i] = elements[i];
|
|
|
|
|
}
|
|
|
|
|
buf[length] = new_line;
|
|
|
|
|
length++;
|
|
|
|
|
delete[] elements;
|
|
|
|
|
elements = buf;
|
|
|
|
|
buf = NULL;
|
2023-09-17 22:13:42 +03:00
|
|
|
}
|
2023-12-03 13:09:16 +03:00
|
|
|
long getLength() {
|
2023-09-17 22:13:42 +03:00
|
|
|
return length;
|
|
|
|
|
}
|
2023-12-03 13:09:16 +03:00
|
|
|
T* get(long i) {
|
|
|
|
|
return elements[i];
|
2023-09-17 22:13:42 +03:00
|
|
|
}
|
2023-12-03 13:09:16 +03:00
|
|
|
T** getElements() {
|
2023-09-17 22:13:42 +03:00
|
|
|
return elements;
|
|
|
|
|
}
|
|
|
|
|
};
|