C++ 在结构定义中声明结构的堆栈

C++ 在结构定义中声明结构的堆栈,c++,struct,stack,nfa,C++,Struct,Stack,Nfa,我需要在它自己的结构声明中声明一个结构的两个堆栈。我知道我可以对数组执行此操作,只要我在结构中用指针引用它(即FA*goingTo[30];将给我一个30FAs的数组)。是否有类似的方法引用堆栈 typedef struct FA { std::stack<FA> goingTo; std::stack<FA> comingFrom; }; typedef结构FA { std::堆栈去往; std::堆栈来自; }; 您在结构中定义的堆栈对象本身将包含(

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

typedef struct FA
{
    std::stack<FA> goingTo;
    std::stack<FA> comingFrom;
};
typedef结构FA
{
std::堆栈去往;
std::堆栈来自;
};

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

typedef struct FA {
   std::stack<FA*> goingTo;
   std::stack<FA*> comingFrom;
};
typedef结构FA{
std::堆栈去往;
std::堆栈来自;
};

你的意思是说
std::stack从_或_转到[2]
(或者更好的
std::array从_或_转到
),然后使用指针、迭代器或索引遍历它们?不清楚您的要求是什么。或者等等,您的意思是有一种在堆栈中迭代的方法吗?在这种情况下,no:
std::stack
仅提供对
top
元素的访问。如果您想访问其他元素,只需直接使用
std::vector
std::deque
<代码>标准::堆栈实际上毫无价值。结构不允许包含自身的标准容器。你必须做些不同的事情。Boost有一些容器可以做到这一点。第一个选项是我正在尝试做的。我为这一混乱道歉。我需要在足总的定义内这样做,因为我将有许多不同的足总去每个足总,来自每个足总。好的,我想我需要查一下其他选项,谢谢。