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

C++ Map send pointer element as parameter

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

对于列表,我有一个 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);

我收到了以下警告:

[Error] conversion from 'std::map<int, Node>::iterator {aka std::_Rb_tree_iterator<std::pair<const int, Node> >}' to non-scalar type 'std::map<int, Node>' requested

[Error] 'class std::map<int, Node>' has no member named 'second'

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

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

你想要:

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

或者简单地使用 auto 不必关心类型:

auto p = List.begin();