2016-12-07 2 views
1

Ich habe Probleme, Vektoren mit Paaren zu initialisieren; Mein Code scheint nicht Ergebnis von adj_list zu arbeiten, [0] [0] .First nicht besagt:Initialisierungsvektor mit Paar

vector < vector <pair <int, int> > > adj_list; 
adj_list.insert(adj_list.end(), { { (make_pair(1,20), make_pair(2,5)), (make_pair(1,7),make_pair(0,2)) }}); 

eine Adjazenzliste zu tun, ich versuche Was ist (fest einprogrammiert erstellen), mit dieser Struktur:

adj_list [0] ---- make_pair (1,20), make_pair (2,5)

adj_list [1] ---- make_pair (0,7), make_pair (3,9)

Wie gehe ich vor?

+0

'(x, y)' '<=> Operator, (x, y)' – LogicStuff

+0

adj_list.insert (adj_list.end (), {{(make_pair (1,20), make_pair (2,5))}, {(make_pair (1,7), make_pair (0,2))}}); – Lukasz

Antwort

3

würden Sie die falschen Klammern verwenden, welche (make_pair(1,20), make_pair(2,5)) den Komma-Operator und dessen Wert verwenden macht, ist make_pair(2,5).

sollten Sie geschweifte Klammern verwenden:

adj_list.insert(adj_list.end(), { { {make_pair(1,20), make_pair(2,5)}, {make_pair(1,7),make_pair(0,2)} }}); 

Aber auf der anderen Seite: das ist keine Initialisierung.
Der Vektor wurde bereits mit dem leeren Vektor initialisiert.

Dies ist eine Initialisierung (Sie nicht auch make_pair benötigen):

vector<vector<pair<int, int>>> adj_list = {{{1, 20}, {2,5}}, 
              {{1, 7}, {0, 2}}}; 
2

Sie die comma operator Aufruf, die korrekte Syntax zu einfügen (nicht initialisiert)

adj_list.insert(adj_list.end(), { 
           { make_pair(1,20), make_pair(2,5) }, 
           { make_pair(1,7), make_pair(0,2) } 
           }); 
Verwandte Themen