私は、オブジェクトのベクトルを繰り返し処理し、毎回オブジェクトを1ピクセル右に移動させる単純な更新機能を実行しようとしています。しかし、コードを実行すると、xの値は1回だけ変更されます。 source.cppでオブジェクトのベクトルを反復する
:person.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);
}
}
}
void Person::Update(Person &person) {
person.x += 1;
}
あなたが見ることができるように、私は配列から1人を選択して、生きているためにそれらを設定します、そのために描かれる。それらはフレームごとに描画されますが、更新されません。誰もがこれで私を助けることができますか?このステートメントで
ありがとうございました。あなたはおそらく私がC++にはまったく新しいと言うことができるので、私はこの問題で私の頭を私が認めようと思っているよりも長い間掻いていました。好奇心のために、これをベクトル上で反復する最も効率的な方法ですか?それはおそらく100k以上のPersonオブジェクトを含んでいるので、私の方法がそれを行う最良の方法であるかどうか疑問に思っていますか? –
@ JamesMclaughlin興味のあるものを見つけるために非常に多くのオブジェクトをループすることは効率が悪くなります。インデックスを保持している変数があった方が良いかもしれません。 – Barmar
しかし、私が望んでいるオブジェクトを見つけるためにはまだ繰り返す必要はありませんか? –