improved Array: use std::vector
This commit is contained in:
@@ -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;
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user