【发布时间】:2011-01-23 02:21:40
【问题描述】:
int test[5][5];
stack<int**> mystack;
mystack.push(test);
我得到错误:
没有匹配的函数调用‘std::stack >::push(int [5][5])’ /usr/include/c++/4.4/bits/stl_stack.h:182:注意:候选者是:void std::stack<_tp _sequence>::push(const typename _Sequence::value_type&) [with _Tp = int** , _Sequence = std::deque >]
我以前从未真正使用过堆栈,因此我将不胜感激。如果我将 test 声明为一维数组并将堆栈声明为 int*,则它可以正常工作。
编辑:我正在尝试为数独求解器实现回溯。我将数独网格作为一个 9x9 的集合对象数组(包含解决方案或可能解决方案的对象)。我必须将拼图的当前状态推入堆栈,然后从那里尝试猜测和检查。如果猜测产生矛盾(即违反数独规则),那么我会从堆栈中弹出以恢复在无效猜测之前的谜题。
【问题讨论】:
-
如果 C++0x 中的
boost::array或std::array是允许的,你可以使用stack< array< array< int, 5 >, 5 > >来达到你的目的。
标签: c++ multidimensional-array stack 2d