Vektor von Vektoren push_back
Ich bin der Gestaltung einer multilevel-queue-Prozess-simulator in C++, aber ich hab ein problem, wenn Sie versuchen zu implementieren, mehrere Warteschlangen (meine queues sind Vektoren).So,
"Multi-Level" ist ein 4-Elemente-array (nicht Vektor). Innerhalb jedes dieser Elemente gibt es einen Vektor (Typ t_PCB).
vector<vector<t_PCB>> multilevel[4];
Meine Frage ist: Wie kann ich einfügen eines Elements am Ende einer dieser 4 t_PCB
Vektoren? Vielen Dank im Voraus.
Ich habe versucht die code-Zeile unten aber es klappt nicht (Fehler: nicht passende member-Funktion für Aufruf von 'push_back')
multilevel[0].push_back(p); //where "p" is a t_PCB object
Die Linie von oben kann nicht verwendet werden, wenn man über "Multi-Level", da dieses Feld akzeptiert nur Argumente Typ: vector < t_PCB >
So, ich Frage am Anfang: wie kann ich schieben Sie ein Objekt-Typ "t_PCB" innen "multilevel"?
InformationsquelleAutor der Frage karl71 | 2013-04-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dadurch:
Deklarieren Sie eine array von vier zero-Größe
vectors
die alle Objekte des folgenden Typs beinhaltenvector<t_PCB>
. Was Sie wohl machen wollte ist vielmehr:Diese instanziieren ein Vektor, der vier default-initialisierte Objekte vom Typ
vector<t_PCB>
. Dann können Sie nur:Beachten Sie jedoch, dass Vektor-Indizes (wie array-Indizes) sind null-basiert, so
size
muss kleiner sein als die Größe des Vektors.In dem obigen Ausdruck, der sub-Ausdruck
multilevel[size]
liefert eine Referenz auf diesize
-TEN Vektor im innerenmultilevel
und auf diesem Vektor sind dann Aufruf der member-Funktionpush_back(p)
die fügt elementp
.InformationsquelleAutor der Antwort Andy Prowl
Deklaration eines zweidimensionalen Vektor ist ähnlich wie ein array deklarieren. Sie können es auch verwenden, in gleicher Weise...
InformationsquelleAutor der Antwort p.j
Erstellen Sie ein array von
vector<vector<t_PCB>>
anstatt ein einzelnes Objekt.Ich denke, der richtige Weg, das zu tun, was Sie wollen, ist:
InformationsquelleAutor der Antwort Hugo Corrá
Können Sie erstellen, die einen vector statt array:
dann können Sie push_back am Ende des Vektors indiziert mit
WHICH
diese Weise:InformationsquelleAutor der Antwort 4pie0
Und einfach es ist, Zugriff auf den Vektor von Vektoren:
wo
outer
kehrt der Vektor zu, der index und weitere Indizierungmit
inner
zurückt_PCB
Objekt. Könnte man auch ersetzen Sie das array-Stil-Indizierung mit der .bei() Funktion für die Grenzen überprüft.InformationsquelleAutor der Antwort gitfredy
InformationsquelleAutor der Antwort Pawandeep Singh