2016-04-19 5 views
-2

Was bedeutet es:C++ Struktur und Vektor

L[a].push_back(edge(b, c)); 

L - Vektor der Strukturkante:

vector<edge> L[1000]; 
+0

Welchen Teil verstehst du nicht? Die [Dokumentation für 'std :: vector :: push_back'] (http://en.cppreference.com/w/cpp/container/vector/push_back) ist ziemlich erklärend. – WhozCraig

+0

Warum L [a]? Welchen Unterschied zwischen L.push_back und L [a] .push_back? Kannst du wissen, wie man das gleiche auf C# schreibt? –

+0

@ R.I. In C# wäre das "L [a] .Add (new Edge (b, c))". 'L' wäre' List [] L = new Liste [1000] 'mit einzelnen Elementen gefüllt mit' new List () '. – dasblinkenlight

Antwort

0

Sie können von der Rückseite Parsen dieser Aussage beginnen, und es herauszufinden, Schritt für Schritt :

  • edge(b, c) macht einen neuen edge durch den Konstruktor
  • Aufruf
  • push_back(edge(b, c)) hängt eine Kopie des neu geschaffenen edge zum vector
  • L[a] ein vector at index ein from the array of vectors L`

Insgesamt nimmt, bedeutet dies "fügen Sie einen neuen edge zu vector<edge> bei Index a des Arrays L[]"

0

L ist kein Vektor der Kante, es ist ein Array von Vektoren der Kante. [1000] bezieht sich nicht auf die Vektorgröße, sondern auf die Array-Größe. Also L[a].push_back(edge(b, c)); bedeutet, dass Sie eine Kante zum a'ten Vektor des Arrays zurückschieben.