尽管我不太熟悉编码,但我一直在努力编码a-star搜索算法,我必须使用c ++编写它。我决定使用类和列表,但是我有一个问题。我的代码如下:
result
到目前为止,它似乎可以正常工作,编译和执行,没有错误。 现在我需要某种方式来了解列表的这一元素,但是我真的不知道如何做到这一点。我已经尝试过了:
{"result":11}
或:
class gridPoint
{
public:
int x;
int y;
int field;
}
gridPoint mapa[20][20];
startX=1;
startY=1;
//code to set the values of attributes
int main(){
mapa[startX,startY] = 1;
list<gridPoint> listZ;
listZ.push_back(*mapa[startX,startY]);
}
但无论使用“ .x”还是不使用
,它均不起作用稍后,我将需要在具有特定属性值的列表中查找特定对象和/或将其删除,但是如果没有上面提到的内容,我还是无法做到这一点。有任何线索,如何使其起作用?
答案 0 :(得分:1)
您的代码已更正,带有说明/备注
#include <iostream>
#include <list>
using namespace std;
class gridPoint
{
public:
int x;
int y;
int field;
}; // the ';' was missing
gridPoint mapa[20][20]; // why global ?
int startX=1; // why global ?, in case : the first index is 0 rather than 1 if you do not know that
int startY=1; // why global ?, in case : the first index is 0 rather than 1 if you do not know that
//code to set the values of attributes
int main() {
mapa[startX][startY] = { 1, 2, 3 }; // each index in its [], mapa[][] is not an int
list<gridPoint> listZ;
listZ.push_back(mapa[startX][startY]); // '*' removed, mapa[][] is a gridPoint, not a pointer to
list<gridPoint>::iterator it = listZ.begin(); // can be a const_iterator because let the list unchanged
cout << it->x << endl; // it->attr it->oper() etc, not it.attr etc
}