2016-09-15 4 views
-3

Я довольно новичок в C++, и я ищу некоторую помощь в том, как я могу получить доступ к хранилищу данных в списке. В настоящее время я сохраняю перемещение игрока, которое представлено вектором векторов в списке.Доступ к данным, хранящимся в Llist

std::vector<std::vector<int> > move1; 

std::vector<std::vector<int> > move2; 

    std::vector<std::vector<int> > move3; 

    std::vector<std::vector<int> > move4; 

    std::list<vector<vector<int>>> moveList; 

void PuzzleBoard::NextPossibleMove() 
{ 
    //assigns the current board state to a temp hold var 
    nextBoard = board; 

    //A switch statement to attempt to move in each direction once 
    for (int i = 1; i < 5; i++) { 
     switch (i) { 
     case 1: { 
      //attempts to move zero up 
      MoveZero(1, userPS); 

      //stores the board after the move 
      move1 = board; 


      //Add the vector of vectors move1 to the list variable moveList 
      moveList.push_back(move1); 


      //Resets the board to its original state 
      board = nextBoard; 
      break; 
     } 
     case 2: { 
      //attempts to move zero down 
      MoveZero(2, userPS); 

      //stores the board after the move 
      move2 = board; 


      //Add the vector of vectors move2 to the list variable moveList 
      moveList.push_back(move2); 


      //Resets the board to its original state 
      board = nextBoard; 
      break; 
     } 
     case 3: { 
      //attempts to move zero left 
      MoveZero(3, userPS); 

      //stores the board after the move 
      move3 = board; 


      //Add the vector of vectors move3 to the list variable moveList 
      moveList.push_back(move3); 


      //Resets the board to its original state 
      board = nextBoard; 
      break; 
     } 
     case 4: { 
      //attempts to move zero right 
      MoveZero(4, userPS); 

      //stores the board after the move 
      move4 = board; 


      //Add the vector of vectors move4 to the list variable moveList 
      moveList.push_back(move4); 



      //Resets the board to its original state 
      board = nextBoard; 
      break; 
     } 
     { 
     default: 
      break; 
     } 
     } 
    } 
} 

Как только вектор векторов перемещается в списке, я не знаю, как к ним обращаться. Я попытался это:

void PuzzleBoard::PrintMovesFromList() 
{ 
    for (std::list<int>::iterator iter = moveList.begin(); iter < moveList.end(); iter++) { 

     cout << *iter << endl; 
} 

Тем не менее, говорит moveList не имеет тип преобразования, чтобы сделать это таким образом. Я также попытался это:

void PuzzleBoard::PrintMovesFromList() 
{ 
    for (std::list<vector<vector<int>>>::iterator iter = moveList.begin(); iter < moveList.end(); iter++) { 

     cout << *iter << endl; 
} 

Тем не менее, говорит, что есть ни один оператор не соответствует для <.

В принципе, я хочу сохранить перемещения, которые игрок делает (который всегда будет представлен как вектор векторов) в списке, а после окончания игры я хочу получить доступ к вектору векторов, хранящихся в списке, для печати их на экран. Я искал несколько сайтов об использовании списков, однако я не перешел ни на какой сайт, дающий пример того, что я пытаюсь сделать. Может ли кто-нибудь указать мне в правильном направлении или объяснить, как я могу получить доступ к сохраненным данным так, как я пытаюсь? Любая помощь будет оценена благодаря вам.

+1

Изменение 'ИТЭР

ответ

0

std::list итераторы не являются итераторами произвольного доступа. Можно заказать только операторы произвольного доступа.

std::list итераторов можно сравнить только для равенства:

for (std::list<int>::iterator iter = moveList.begin(); 
     iter != moveList.end(); iter++) { 

Однако, так как вы «новичок в C++» вы должны действительно научиться перебирать контейнер с использованием новых возможностей языка от текущих C++ стандарт:

for (const auto &value:moveList) 
     cout << value << endl; 
+0

Спасибо Сэм, я был в состоянии заставить его работать, как только вы указали свою ошибку. Я рассмотрю документацию по стандарту currn = ent C++. Еще раз спасибо. – Valhun

Смежные вопросы