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();
我需要从我为启发式搜索算法制作的列表中的节点打印数组。
对于列表,我有一个 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();