2014-10-06 47 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; 
};