Ich versuche, über einen Vektor von Objekten zu iterieren und eine einfache Update-Funktion durchzuführen, die das Objekt jedes Mal um 1 Pixel nach rechts bewegt. Wenn ich den Code ausführe, wird der x-Wert jedoch nur einmal geändert.Iterieren über einen Vektor von Objekten
In source.cpp:
for (int i = 0; i < Screen::SCREEN_WIDTH * Screen::SCREEN_HEIGHT; i++) {
people.push_back(Person());
}
for (int i = 0; i < 1; i++) {
people[i].isAlive = true;
}
while(true) {
for (Person p : people) {
if (p.isAlive == true) {
p.Update(p);
cout << p.x << endl;
screen.setPixel(p.x, p.y, 255, 0, 0);
}
else {
screen.setPixel(p.x, p.y, 0, 0, 0);
}
}
}
In person.cpp
void Person::Update(Person &person) {
person.x += 1;
}
Wie Sie sehen können, ich eine Person aus dem Array auswählen und sie am Leben sein und deshalb gezeichnet werden. Sie werden für jeden Frame gezeichnet, aber nicht aktualisiert. Kann mir jemand dabei helfen?
Vielen Dank für die Hilfe. Wie Sie wahrscheinlich wissen, dass ich in C++ noch ziemlich neu bin, habe ich mich bei diesem Problem länger am Kopf kratzt, als ich zugeben würde. Aus Neugier, ist dies der effizienteste Weg, um über den Vektor zu iterieren. Es wird wahrscheinlich mehr als 100k + Person-Objekte enthalten, also frage ich mich nur, ob mein Weg der beste Weg ist, es zu tun? –
@JamesMclaughlin Wenn Sie über so viele Objekte schleifen, um das Objekt zu finden, das ineffizient ist, könnte es besser sein, wenn Sie eine Variable haben, die ihren Index hält. – Barmar
Aber müsste ich nicht immer noch iterieren, um das gewünschte Objekt zu finden? –