2012-04-12 7 views
0

Ich habe einen 2D-Vektor, der ein 2D-Gitter darstellt; so zum Beispiel grid[0][2]. Ich muss "einfügen" -könnte nicht das richtige Wort hier sein. ein Vektor an einer bestimmten Stelle sagen grid[3][2] es auf jeden Fall ein grid[0][0] sein wird, aber wenn im zu benötigen in grid[3][2] einfügen es nichts sein kann, bevor es andere als grid[0][0] und dort der Raum dazwischen für später sein muss. Gibt es eine Möglichkeit, dies zu tun?Einfügen an einer bestimmten Stelle eines 2d-Vektors

Vielen Dank für Ihre Hilfe.

ps: Ich sollte anmerken, dass die Größe der Vektoren nicht bekannt sind (sie im Laufe der Zeit wachsen wird)

+0

Wenn das Array kleiner als Ihre Anforderungen ist, ändern Sie die Größe und führen Sie dann die Einfügung durch. – Robinson

+0

@Robinson Ich muss auf das Gitter verweisen als 'grid [3] [2]' sonst würde ich nicht wissen, wo X3 Y2 liegt, wenn es auf 'grid [0] [1] geschoben wurde' – Elgoog

+0

Nein, meine ich Wenn Sie sehen, dass x, y nicht im Array existiert, weil es nicht groß genug ist, ändern Sie die Größe des Arrays, bis es groß genug ist, um x, y zu speichern und dann x, y: p zu speichern. – Robinson

Antwort

2

Ich bin nicht sicher, ob ich Ihre Anforderungen richtig verstanden habe, aber:

std::vector<std::vector<int>> grid(4); // 4 rows 

grid[3].resize(3) // resize 4th row 

grid[3][2] = 42; 

Ihr 2D-Gitter würde „Look“ wie das dann: später

| 
- 
| 
-     <--- 3 empty rows 
| 
-------------- 
| 0 | 0 | 42 | 
-------------- 

Sie die Zeilen frei skalieren können. Beachten Sie, dass es Zeile 0, aber noch kein [0] [0] -Element gibt, Sie müssen es selbst hinzufügen.

+0

Ja. Das meinte ich: p. – Robinson

+0

@jrok interessant, Es scheint, ich bin ein wenig verwirrt; Ich muss vielleicht mein Wissen auffrischen. Also kann ich richtig sagen, dass ich auf 'Grid [3] [0]/Grid [3] [1] und Grid [3] [2]' verweisen konnte, aber nicht auf 'Grid [2] [0] '(bis ich erstellte es) – Elgoog

+0

die ich würde 'Grid [2] .resize (1) ' – Elgoog

Verwandte Themen