Ich versuche, einen Vektor zu erstellen, der Zeiger enthält, zeigt jeder Zeiger auf einen anderen Vektor eines Typs Cell
, die ich mithilfe einer Struktur erstellt habe. Die for-Schleife unten erlaubt es mir, den Benutzer definieren zu lassen, wie viele Elemente es im Vektor der Zeiger gibt. Hier ist mein Code:Erstellen eines Vektors von Zeigern, die auf mehr Vektoren zeigen
vector< vector<Cell>* > vEstore(selection);
for (int t=0; t<selection; t++)
{
vEstore[t] = new vector<Cell>;
vEstore[t]->reserve(1000);
}
Dies, glaube ich, gibt mir einen Vektor von Zeigern auf Zielvektoren des Typs Cell
. Dies kompiliert, aber ich versuche jetzt push_back
auf die Zielvektoren und kann nicht sehen, wie es geht.
Da der Zielvektor des Typs Zelle ist, die von einem Typ wird wie folgt hergestellt:
struct Cell
{
unsigned long long lr1;
unsigned int cw2;
};
ich nicht, wie mit zwei Werten push_back
auf diesem Zielvektor arbeiten kann?
Ich dachte ...
binpocket[1]->lr1.push_back(10);
binpocket[1]->cw2.push_back(12);
Da ich dieses dereferenzieren den Zeiger auf binpocket[1]
gedacht, die Ziel-Array Werte enthüllt, dann wiederum jedes Element adressieren. Aber es kompiliert nicht.
kann jemand helfen ... aber das hat nur einen Wert und kompiliert sowieso nicht.
Vielen Dank beide – Columbo
Das ist wahrscheinlich eine wirklich dumme Frage, aber warum haben Sie den Konstruktor zweimal, einmal leer? – Columbo
Wenn Sie keine Konstruktoren bereitstellen, erstellt der Compiler einen leeren Standardkonstruktor (d. H. Parameterlos) für Sie. Das heißt, Sie können 'Cell cell;'. Wenn Sie einen benutzerdefinierten Konstruktor bereitstellen, wird der Compiler den Standardkonstruktor für Sie nicht erstellen. Deshalb habe ich es zur Verfügung gestellt. Sie müssen das nicht tun, wenn Sie nicht 'Cell cell;' machen wollen. – avakar