quant
yeah
возникла необходимость создать стек с возможностью доступа по индексу и для экономии места избавиться от ссылок и воспользоваться линейной структурой
vector не подходит - много места жрёт, создаю свой класс storage
но этот класс работает много медленнее vector'а, почему так ?
vector не подходит - много места жрёт, создаю свой класс storage
Код:
// 1 interface
class storage {
private:
unsigned char * data;
unsigned length;
public:
storage ();
const unsigned& size() const;
unsigned char& operator[] (const unsigned&);
unsigned char backnpop();
void push (const unsigned char&);
};
// 0 interface implementation 1
storage::storage() : data (NULL), length(0) {
};
const unsigned& storage::size() const {
return length;
};
unsigned char& storage::operator[] (const unsigned& pos) {
return *(data + pos);
};
unsigned char storage::backnpop () {
return *(data + (--length));
};
void storage::push (const unsigned char& value) {
unsigned char* temp (new unsigned char[length + 1]);
unsigned char *t (temp), *d (data);
unsigned it (0);
if (length) {
do {
*(t++) = *(d++);
} while (++it != length);
};
*t = value;
delete [] data;
data = temp;
++length;
};
// 0 implementation