2016-06-14 5 views
1

Ich versuche, Adjazenzliste über vector < list <int> > zu erstellen, aber ich nicht, wie die Größe der list<int> zuweisen;wie die Größe des Vektors zuweisen < list <int>>?

Ich möchte die Größe von beiden vector< list<int> > und list<int> bei der Deklaration angeben.

siehe meinen Code;

#include<iostream> 
#include<vector> 
#include<list> 

using namespace std; 
... 

vector< list<int> > adj_list<(number_city); 
// here just specified the size of vector< list<int> >. 
+0

Sie können 'vector < list> adj_list <(number_city, std :: list (some_size));'. Es klingt jedoch nicht richtig. Wenn Sie die Größe der Adjazenzliste vorgeben möchten, verwenden Sie 'std :: vector >'? –

Antwort

1

Wenn Sie die Größe von vector angeben, wenn die Initialisierung, dann

vector< list<int> > adj_list(number_city); // construct vector with size = number_city, all the elements are empty (size == 0) 

Wenn Sie die Größe von vector und alle Elemente Größe angeben möchten, dann

vector< list<int> > adj_list(number_city, list<int>(some_number)); // construct vector with size = number_city and all the elements are lists with some_number elements default constructed 

Siehe std::vector's third constructor und std::list's third constructor

+0

Vielen Dank. @songyuanyao –

0
vector< list<int> > adj_list<(number_city); 
for(vector< list<int> >::size_type i = 0; i < number_city; i++) 
{ 
    adj_list.at(i).resize(some_size); 
} 

Sie können diesen Weg versuchen.

Verwandte Themen