c ++,在列表内打印对象的属性值,查找具有特定属性值的对象,删除该对象

时间:2018-12-22 12:54:14

标签: c++ list

尽管我不太熟悉编码,但我一直在努力编码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”还是不使用

,它均不起作用

稍后,我将需要在具有特定属性值的列表中查找特定对象和/或将其删除,但是如果没有上面提到的内容,我还是无法做到这一点。有任何线索,如何使其起作用?

1 个答案:

答案 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
}