Newsgroup: it.comp.lang.c++
Titolo: Help lista di liste

Salve, vorrei implementare una lista di puntatori a n liste e vorrei 
usare un tipo di dato che sia vector o list.
per esempio per n=5, faccio:
list<int>* adj = new list<int>[n];
così alloco lo spazio per 5 liste.
Ora il mio problema è che non so come accedere agli elementi delle liste.
Qualche suggerimento?
Grazie

 usare un tipo di dato che sia vector o list.
Quando lavori in C++, poniti sempre la domanda se valga realmente la pena
usare i puntatori.
Io farei così:
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <list>
typedef std::list<int> contained_list;
typedef std::list<contained_list> container_list;
void fill_contained_list(contained_list& aList) {
     for (int i=0; i<rand()%10+1; i++)
        aList.push_back(rand()%50);
}
void fill_container_list(container_list& aList) {
    container_list::iterator it = aList.begin();
    while (it != aList.end()) {
        fill_contained_list(*it);
        it++;
    }
}
void dump_contained_list(contained_list& aList) {
     contained_list::iterator it = aList.begin();
     std::cout << "list: ";
     while (it != aList.end()) {
        std::cout << *it << "; ";
        it++;
     }
     std::cout << std::endl;
}
void dump_container_list(container_list& aList) {
     container_list::iterator it = aList.begin();
     int i=0;
     while (it != aList.end()) {
        std::cout << i++ << ") ";
        dump_contained_list(*it);
        it++;
     }
     std::cout << std::endl;
}
int main()
{
    container_list myList(5);
 
    srand(time(0));
    fill_container_list(myList);
    dump_container_list(myList);
 
    return EXIT_SUCCESS;
}
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 un tipo di dato che sia vector o list.
Ti ho scritto un'esempio sia per list che per vector:
#include <iostream>
#include <vector>
#include <list>
using namespace std;
const int N = 5;
list<int>* ladj = new list<int>[N];
vector<int>* vadj = new vector<int>[N];
int main() {
    // Inserisco gli elementi all'interno delle N liste
     for (int i = 0; i < N; i++)
        for (int j = 0; j < 10; j++)
            ladj[i].push_back(j + i + 1);
    // Stampo gli elementi all'interno delle N liste
    for (int i = 0; i < N; i++) {
        cout << "Lista " << i + 1 << " contiene :" << endl;
        // Per scorrere una lista hai bisogno di un iteratore
        for (list <int>::iterator it = ladj[i].begin(); it != ladj[i].end(); 
it++)
            cout << *it << " ";
        cout << "\n" << endl;
    };
    // Inserisco gli elementi all'interno degli N vettori
    for (int i = 0; i < N; i++)
        for (int j = 0; j < 10; j++)
            vadj[i].push_back(j + i + 1);
    // Stampo gli elementi all'interno degli N vettori
    for (int i = 0; i < N; i++) {
        cout << "Vettore " << i + 1 << " contiene :" << endl;
        // Il vettore lo puoi scorrere utilizzando semplici indici
        for (int j = 0; j < 10; j++)
            cout << vadj[i][j] << " ";
        cout << "\n" << endl;
    };
    while (cin.get() != '\n');
}
Ciao 

Grazie Andrea, ma non stavi nell'NG di C? Comunque è bello vedere che 
dopo qualche annetto di assenza, si può contare ancora sulla preziosa 
esperienza di un veterano come te! ;-)

 
Questo esempio si avvicina molto al mio prog.
Non mi picchiare, ma il motivo per cui non mi compilava alla fine l'ho 
trovato dopo aver cancellato tutto e rifatto da capo.
Per la cronaca, creavo una da utilizzare come tipo nella list< >:
struct elem{
	int elemento;
	int peso;
} <- avevo dimenticato il ";" !!!
typedef struct elem* p_elem;
Comunque farò tesoro del tuo esempio!
Grazie

 Comunque farò tesoro del tuo esempio!
Bene, ciao!