Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C++] Difficoltà a scorrere un Vector di List e a lavorarci su

    Buongiorno,
    ho un problema

    ho una struttura dati costituita da un vector di puntatori a liste contenenti ciascuna a loro volta dei puntatori a oggetti Nodo.


    codice:
        std::vector<std::list<Nodo *>* > *listaConcatenata;
    che nel costruttore istanzio con

    codice:
        this->listaConcatenata = new std::vector<std::list<Nodo *>* >();
    successivamente con un ciclo for alloco tutte le n liste
    con un solo Nodo iniziale

    codice:
            std::list<Nodo *> *listaNodi = new std::list<Nodo*>();    listaNodi->push_back(nodo);
        this->listaConcatenata->push_back(listaNodi);
    successivamente ho un metodo di stampa, e credo sia qui l'errore, perchè non mi funziona l'iteratore che all'università ho studiato poco

    codice:
    void Accumulatore::printAccumulatore(){
        for (int i = 0; i < this->numeroNodi; i++)
        {
        std::list <Nodo*>::iterator it1 ;
            for (it1 = listaConcatenata->at(i)->begin(); it1 != listaConcatenata->at(i)->end(); it1++)
            {
                
                std::cout << "elemento = " << *it1 << std::endl;
            }
        }
    
    
    }

    in pratica mi stampa solo righe tipo " elemento = 0055A498" poi si conclude senza crash

    Chiedo aiuto, io con quel ciclo for devo stampare il nome e la chiave intera dell'oggetto di classe Nodo che possiede dei metodi getNome() e getChiave() che sono stringa ed intero.
    ma purtroppo non so proprio come fare con queste list e iteratori,
    vi prego aiuto!!!

    p.s. uso windows 8 e c++ sotto visual studio 2013 GRAZIE!!!
    Ultima modifica di lello82nap; 08-02-2014 a 11:24

  2. #2
    Ciao

    Credo che dovresti solo richiamare i metodi per ottenere i valori
    codice:
             
            for (int i = 0; i < this->numeroNodi; i++)
            {
                std::list <Nodo*>::iterator it1 ;
                for (it1 = listaConcatenata->at(i)->begin(); it1 != listaConcatenata->at(i)->end(); it1++)
                {
                    std::cout << "elemento = " << (*it1)->getNome() <<" "<< (*it1)->getChiave() << std::endl;
                }
            }
    Ultima modifica di Samuele_70; 08-02-2014 a 15:58
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

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.