问题描述
我需要从我为启发式搜索算法创建的列表中的节点上打印数组。
对于列表,我有一个C ++映射std::map<int,Node>List
WHERE节点的结构如下:
struct Node{
Node *pParent;
int array[3][3]; };
我可以像这样将节点“ n”成功插入到列表中:
List.insert(std::make_pair(0,*n));
但是我在如何将“节点”作为参数发送给函数时遇到麻烦:
void printArr(Node *tNode){
int row,col;
//prints the 2Darray
for(row = 0; row < 3; row++) {
for(col = 0; col < 3; coL++) {
std::cout << tNode->array[row][col] << " ";
}
我尝试了这种方法将其作为参数发送,但是没有用。
std::map<int,Node> p = List.begin();
printBoard(p.second);
我收到以下警告:
[错误]从'std :: map
:: iterator {aka std :: _ Rb_tree_iterator >}'转换为非标量类型'std :: map '请求
[错误]'std :: map
类没有名为'second'的成员
解决方法
std::map<int,Node> p = List.begin();
不起作用,因为begin()返回一个迭代器,但您已声明p的类型为std :: map。
您要
std::map<int,Node>::iterator p = List.begin();
或者直接使用auto
不必关心类型:
auto p = List.begin();