c ++, печать значения атрибута объекта внутри списка, поиск объекта с определенным значением атрибута, удаление объекта - PullRequest
0 голосов
/ 22 декабря 2018

Я борюсь с кодированием алгоритма звездного поиска, я должен сделать это на c ++, хотя я не очень знаком с ним.Я решил использовать классы и списки, но у меня есть одна проблема.Мой код выглядит так:

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]);
}

На данный момент он работает, компилируется и выполняется без ошибок.Теперь мне нужно как-то добраться до этого элемента списка, но я понятия не имею, как это сделать.Я пробовал просто:

list<gridPoint>::iterator it = listZ.begin();
cout<<listZ[it].x;

или:

cout<<*it.x;

, но это не работает, ни с ".x", ни без

Позже я быМне нужно найти конкретный объект в списке с определенным значением атрибута и / или удалить его, но без этого, как указано выше, я все равно не смог бы это сделать.Любые подсказки, как заставить это работать?

1 Ответ

0 голосов
/ 22 декабря 2018

ваш код исправлен, с объяснениями / замечаниями

#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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...