int test[5][5];
stack<int**> mystack;
mystack.push(test);
我得到的錯誤:將2d數組推到C++ STL堆棧上?
no matching function for call to ‘std::stack > >::push(int [5][5])’ /usr/include/c++/4.4/bits/stl_stack.h:182: note: candidates are: void std::stack<_Tp, _Sequence>::push(const typename _Sequence::value_type&) [with _Tp = int**, _Sequence = std::deque >]
我從來沒有真正使用堆棧之前,所以我希望得到任何幫助。如果我將測試聲明爲一維數組並且將其作爲int *進行堆棧,那麼它可以正常工作。
編輯:我試圖爲sudokusolver實施追溯。我把數獨網格作爲一個9x9的集合對象數組(對象持有解決方案或可能的解決方案)。我必須將拼圖的當前狀態推入堆棧,然後從那裏嘗試猜測並檢查。如果猜測產生矛盾(即違反數獨的規則),那麼我會在堆棧中彈出以在無效猜測之前恢復難題。
如果'的boost :: array`或'的std :: array` C++ 0x中是允許的,你可以使用 `堆棧<陣列<陣列< int, 5 >,5>>爲您的目的。 – 2011-01-23 13:11:48