C ++ Map发送指针元素作为参数

问题描述

我需要从我为启发式搜索算法创建的列表中的节点上打印数组。

对于列表,我有一个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'的成员

此外,我应该如何访问添加到列表中的节点“ n”的内容

解决方法

std::map<int,Node> p = List.begin();不起作用,因为begin()返回一个迭代器,但您已声明p的类型为std :: map。

您要

std::map<int,Node>::iterator p = List.begin(); 

或者直接使用auto不必关心类型:

auto p = List.begin();