Я пишу код на C++ с контейнером, похожим на Stack.Возможно ли создать нерекурсивный деструктор в стеке, таком как контейнер?
class Stack {
public:
int data;
Stack *next;
void push();
void pop();
~Stack() {
delete next;
}
};
Проблема в рекурсивном деструкторе. Если я нажимаю сотни тысяч элементов, деструктор падает до переполнения стека. Можно ли изменить его нерекурсивным способом?
Да, повторите все узлы и добавьте их в 'std :: set'. после этого удалите только объекты из набора. – Raxvan
Ваше определение класса является рекурсивным, имеющим 'Stack *' как член. Если стек должен быть реализован как связанный список, используйте узлы для этого. Или просто используйте 'std :: stack'. – JorenHeit
Возможно, вы захотите иметь класс * StackRoot *. – Jarod42