Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    34

    [C++]Come dichiarare una coda di array

    Ciao a tutti, sono alle prime armi con il C++ e ho qualche problema con la classe queue della stdlib.

    In pratica mi servirebbe usare una coda di array in una classe. Ho dichiarato l'attributo come:

    codice:
    std::queue<int[3]> miaCoda;
    Fin qui tutto ok, cioè almeno non mi da errore, quindi presumo si dichiari così, ma poi quando faccio il pop per rilevare l'elemento faccio:

    codice:
     
    int appo[3];
    appo = miaCoda.pop();
    e mi dice che non può convertire void con int[3] (cioè mi dice che appo è void).

    Come faccio a fare il pop in modo corretto?

    Grazie a chiunque mi illumini.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    34
    Mi sono reso conto che il metodo pop non restituisce nulla ma cancella solamente il prossimo elemento, così ho usato prima il front e poi pop:

    codice:
    int appo[3];
    appo = miaCoda.front();
    miaCoda.pop();
    Solo che ora ho quest'errore: " '=' : left operand must be l-value"

    Credo che non possa usare direttamente l'uguale, ma come faccio a copiare il contenuto di quello che mi restituisce il front()?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Sicuro che quella dichiarazione non ti dia problemi? Col g++ ottengo errori di compilazione...

    Comunque per risolvere puoi semplicemente dichiarare la coda come una generica coda di puntatori a interi, poi il fatto che utilizzerai solo array di dimensioni pari a 3 lo sai solo tu

    codice:
    #include <iostream>
    #include <queue>
    
    using namespace std;
    
    int main()
    {
    	queue<int *> myQueue;
      
    	int array1[3] = {0, 1, 2},
    	    array2[3] = {3, 4, 5},
    	    array3[3] = {6, 7, 8},
    	    *pnt;
    
    	myQueue.push(array1);
    	myQueue.push(array2);
    	myQueue.push(array3);
      
    	while (! myQueue.empty()) {
    		pnt = myQueue.front();
    		cout << pnt[0] << endl << pnt[1] << endl << pnt[2] << endl << endl;
    		myQueue.pop();
    	}
      
    	return 0;
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    34
    Grazie per la risposta, così funziona.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.