c++ - 是否可以像容器一样在堆栈中创建非递归析构函数?

标签 c++ stack

我正在使用类似于 Stack 的容器用 C++ 编写代码。

class Stack {
public:
    int data;
    Stack *next;
    void push();
    void pop();
    ~Stack() {
        delete next;
    }

};

问题出在递归析构函数中。如果我推送数十万个元素,析构函数会崩溃并导致堆栈溢出。是否可以以非递归方式更改它?

最佳答案

一个自然的解决方案是拥有一个包含实际数据和链接的内部 Node 结构。然后 Stack 类只有一个指向列表中第一个节点的指针,并且可以轻松地遍历列表以删除每个节点。

关于c++ - 是否可以像容器一样在堆栈中创建非递归析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21832156/

相关文章:

c++ - 在 Recordset ADO 中找不到记录

c++ - std::is_nothrow_move_constructible 是否需要 noexcept 析构函数?

c++ - CMakeLists.txt : (add_executable): No SOURCES given to target: Tutorial

java - Java 中 RPN 示例中使用堆栈的 NullPointerException

c++ - C++中的动态堆栈分配

iphone - 我应该避免 iPhone 上的递归吗?

c++ - 将 QPainterPath 写入 XML

c++ - 为什么要声明/创建一个单独的变量来通过引用调用,而不是仅仅在函数调用中创建一个自动对象?

linux - 用于了解可执行文件的文本、BSS 等字段的命令

c++ - const 数组是否在存储在堆栈中的函数中声明?