improved Array: use std::vector

This commit is contained in:
2023-12-03 13:41:29 +03:00
parent 6b7bde1471
commit c4b8e2dd7a
8 changed files with 42 additions and 45 deletions

View File

@@ -3,42 +3,35 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <vector>
template <class T>
class Array {
protected:
long length;
T** elements;
private:
std::vector<T*> elements;
public:
Array() {
length = 0;
elements = NULL;
}
Array() { }
virtual ~Array() {
if (elements != NULL) {
for (long i = 0; i < length; ++i)
delete elements[i];
delete[] elements;
}
for (auto& elem : elements)
delete elem;
elements.clear();
}
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;
elements.push_back(new_line);
}
long getLength() {
return length;
long getLength() const {
return elements.size();
}
T* get(long i) {
return elements[i];
}
T** getElements() {
const std::vector<T*>& getElements() const {
return elements;
}
};