Array in Vektor, wie wirds gemacht?

Marco7757

Mitglied
Ich versuche gerade meinen int-Array in einem Vektor zu speichern. Allerdings gibt es eine unglaublich lange Fehlermeldung.
Nach einigem Testen bin ich zum Schluss gekommen, dass folgendes nicht funktioniert:

Code:
vector<int[2]> koordinaten;

Wie kann ich den Vektor denn anders deklarieren, wenn er einen Array von der Grösse 2 enthalten soll?
Wenn ich die Zahl (2) weglasse, dann meckert Visual Studio schon beim ersten push_back(), wenn ich einen Array hinzufügen will, das halt die Grösse unbekannt ist. Das ist nachzuvollziehen. Aber warum wird dann obiger Code nicht akzeptiert?
 
Ich versuche gerade meinen int-Array in einem Vektor zu speichern
Allerdings gibt es eine unglaublich lange Fehlermeldung.

Aha ... und welche ? ? ?

Nach einigem Testen bin ich zum Schluss gekommen, dass folgendes nicht funktioniert:
Code:
vector<int[2]> koordinaten;

Wie kann ich den Vektor denn anders deklarieren, wenn er einen Array von der Grösse 2 enthalten soll?

Was genau meinst Du damit ? ?
Willst Du in dem Vektor nur ein einzelnes Array-Objekt speichern? ? Oder nur zwei Integer ? ?

Fragen über Fragen ..... ;-)

Gruß
Klaus

EDIT: poste mal den relevanten Code !!
 
Zuletzt bearbeitet:
Du müsstest - wenn du das mit Vektoren lösen willst - den Typ des Vektors selbst als einen Vektor deklarieren.
Was ich aber nicht für einen elegante Lösung halte, wie badday sagte.

Folgendes müsste aber funktionieren:
C++:
typedef vector<int> VectorContent;
vector<VectorContent> koordinaten;
 
Du kannst sehrwohl Container beliebig ineinander verschachteln, wie ComFreek sagte. Wenn du aber z. B. Koordinatenpunkte (vll. willst du das mit int[2]) speicher willst, ist es am besten, eine kleine Klasse zu schreiben wie:
Code:
class coords
{
public: 
int x, y;
};
 
Genau, ich will Koordinaten speichern.

Für zwei Zahlen eine eigene Klasse? Ist das nicht ein etwas grosser Aufwand?

Die Idee mit einem zweiten vector im ersten zu Arbeiten ist mir schon gekommen, nur dachte ich, dass das Programm etwas besser läuft, wenn ich statt einem dynamischen vector einen Array benutze, dessen Grösse schon feststeht, denn der muss für einen Computer doch sicher einfacher zu handhaben sein, nicht?
 
Wie wäre es denn deiner Meinung nach am effizientesten, wenn du keine Ahnung hast, wieviele Koordinaten du schlussendlich speichern musst?

Jetzt habe ich folgendes Problem. Dies ist mein Vektor:
Code:
vector<vector<int>> eckKoordinaten (((1, 1), (3, 2), (2, 4), (1, 3)));

//CODE

eckKoordinaten[0][0] //error
eckKoordinaten.at(0).at(0) //error

Wieso kann ich nicht auf die gespeicherten Daten zugreifen? Das Programm bricht an der Aufrufstelle ab und sagt mir folgendes:

Debug Error!

Program: C:\.....
R6010

-abort() has been called

Press Retry to debug the application...
 
Du musst so zugreifen: eckKoordinaten[0].x bzw .y

Wie wäre es denn deiner Meinung nach am effizientesten, wenn du keine Ahnung hast, wieviele Koordinaten du schlussendlich speichern musst?
Ich denke mit dieser Klasse hast du schon eine ganz gute Effizienz erreicht.
 
Zurück