2016-09-15 3 views
-3

Ich bin ziemlich neu in C++ und ich suche nach Hilfe, wie ich auf Datenspeicher in einer Liste zugreifen kann. Ich speichere gerade den Zug eines Spielers, der durch einen Vektor von Vektoren in einer Liste dargestellt wird.Zugriff auf in einer Llist gespeicherte Daten

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

Sobald ich den Vektor der Vektoren bewegen in der Liste habe ich nicht wissen, wie Sie auf sie zugreifen. Ich habe versucht, diese:

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

     cout << *iter << endl; 
} 

Jedoch sagt es keine Bewegungsliste Conversion-Typen hat es auf diese Weise zu tun. Ich habe auch versucht diese:

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

     cout << *iter << endl; 
} 

Aber es sagt, es gibt kein Betreiber für < entspricht.

Grundsätzlich möchte ich die Bewegungen des Spielers speichern (die immer als Vektor von Vektoren dargestellt werden) in einer Liste und nachdem das Spiel vorbei ist möchte ich auf den Vektor der Vektoren in der Liste zum Drucken zugreifen sie auf den Bildschirm. Ich habe mehrere Seiten über die Verwendung von Listen durchsucht, aber ich habe keine Website durchsucht, die ein Beispiel dafür gibt, was ich versuche zu tun. Kann mir jemand in die richtige Richtung zeigen oder erklären, wie ich auf die gespeicherten Daten auf die Art und Weise zugreifen kann, wie ich es versuche? Jede Hilfe wäre dankbar, danke.

+1

ändern 'iter

Antwort

0

std::list Iteratoren sind keine Random-Access-Iteratoren. Nur Random-Access-Operatoren können so bestellt werden.

std::list Iteratoren kann nur für Gleichheit verglichen werden:

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

Aber da man „neu in C++“ sind, sollten Sie wirklich lernen, wie man einen Behälter aus der aktuellen C neuen Sprachfunktionen mit iterieren ++ Standard:

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

Danke Sam konnte ich es zum Laufen bringen, wenn Sie meinen Fehler hingewiesen. Ich werde in die Dokumentation für den aktuellen C++ Standard schauen. Danke noch einmal. – Valhun

Verwandte Themen