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