Есть реализация класса контейнера с помощью двумерного массива,помогите пределать под стек,пожалуйста
class container : public base
{
public:
private:
base*** array1;
int order;
int ni; int nj; //последний элемент
public:
container(int ord) {
ni = 0; nj = 0;
order = ord;
array1 = new base**[order];
for (int i = 0; i < order; i++){
array1[i] = new base*[order];
for (int j = 0; j < order; j++){
array1[i][j] = NULL;
}
}
}
~container() {
for (int i = 0; i < order; i++){
if (array1[i]){
delete[] array1[i];
}
delete[] array1;
array1 = NULL;
order = 0;
}
}
bool Add(base *n){ //добавление элемента в конец
array1[ni][nj] = n;
if (nj != order - 1){
nj++;
return true;
}
else if (nj == order - 1 && ni != order - 1){
nj = 0; ni++;
}
else if (nj == order - 1 && ni == order - 1){
return false;
}
return false;
}
bool Equals(base* n){
container* p = dynamic_cast<container*>(n);
bool full = true;
for (int i = 0; i < order; i++){
for (int j = 0; j < order; j++){
if (array1[i][j] != p->array1[i][j]){
full = false;
}
}
}
return full;
}
void ToString(char* buffer);
};
#include <string>
#ifndef DEFINE_TEMPLATE_STACK
#define DEFINE_TEMPLATE_STACK
template <typename T> class Stack
{
public:
Stack(size_t s = 1024);
~Stack();
class Exception
{
std::string message;
public:
Exception(const std::string& s = std::string() ) :
message("Exception.")
{
message.append(s);
}
};
class Badsize : public Exception
{
public:
Badsize() : Exception("StackBadsize.") {}
};
class Underflow : public Exception
{
public:
Underflow() : Exception("StackUnderflow.") {}
};
class Overflow : public Exception
{
public:
Overflow() : Exception("StackOverflow.") {}
};
void Push(T);
T Pop();
size_t Length();
size_t Total();
private:
static const size_t max = 10000;
T* value;
size_t size, top;
};
template <typename T> Stack<T>::Stack(size_t s)
{
value = 0;
size = top = 0;
if (s > max) throw Badsize();
value = new T[s];
size = s;
top = 0;
}
template <typename T> Stack<T>::~Stack()
{
delete[] value;
value = 0;
size = top = 0;
}
template <typename T> void Stack<T>::Push(T p)
{
if (top == size) throw Overflow();
value[top] = p;
top++;
}
template <typename T> T Stack<T>::Pop()
{
if (top == 0) throw Underflow();
top--;
return value[top];
}
inline template <typename T> size_t Stack<T>::Length()
{
return size;
}
inline template <typename T> size_t Stack<T>::Total()
{
return top;
}
#endif
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
При выполнение данного кода произошло создание трех объектовЕсли происходит создание одного или двух - я могу понять логику
После сортировки в массиве NxN появляется мусор, с каждым разом мусор в разных местах
Столкнулся с проблемой, которая заключается в кривом отображении блока с текстом
Имеются 4 блокаУ каждого из них идентичный код, который приведен ниже