在结构定义内部声明结构的堆栈

Declaring a stack of a struct inside the struct definition

本文关键字:结构 堆栈 声明 内部 定义      更新时间:2023-10-16

我需要在一个结构自身的结构声明中声明两个结构堆栈。我知道我可以对数组执行此操作,只要我在结构中用指针引用它(即FA *goingTo[30];将给我一个30个FA的数组)。是否有类似的方法引用堆栈?

typedef struct FA
{
    std::stack<FA> goingTo;
    std::stack<FA> comingFrom;
};

您在结构中定义的堆栈对象本身将包含(可能)结构的多个实例,每个实例都包含自己的堆栈,这些堆栈再次包含更多的结构。所以,如果你仔细想想,这是一个无限的遏制链。您可以修改定义(和用法)以包含指向FA*的指针堆栈。这将解决问题。

typedef struct FA {
   std::stack<FA*> goingTo;
   std::stack<FA*> comingFrom;
};