2014-10-06 49 views
1

我需要在它自己的struct声明中声明两个struct的结构体。我知道我可以用一个数组来做这个操作,只要我用结构体内的指针引用它(即FA *goingTo[30];会给我一个30 FA的数组)。有没有类似的方法来引用堆栈?在结构体定义中声明一个struct的堆栈

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

你指的是指'的std ::堆 going_from_or_to [2]'(或更好'的std ::阵列<性病::堆> going_from_or_to'),然后使用指针,迭代器,或指数去通过他们?目前还不清楚你的要求。 – o11c 2014-10-06 05:33:54

+0

或者等待,你的意思是有没有一种方法可以在堆栈中进行迭代?在这种情况下,no:'std :: stack'只能访问'top'元素。如果你想访问其他元素,只需直接使用'std :: vector'或'std :: deque'; 'std :: stack'实际上毫无价值。 – o11c 2014-10-06 05:35:19

+0

结构不允许包含自己的标准容器。你必须做一些不同的事情。 Boost有一些容器可以做到这一点。 – 2014-10-06 05:39:42

回答

0

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

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