0

チームのベクトルがあり、それぞれにプレーヤーがいます。並べ替えて表示できるように、すべてのプレーヤーを 1 つのベクトルにまとめる必要があります。vectorOfTeams[i].getVectorOfPlayers()[j]を取得し、それをプレーヤーのメモリ ロケーションに変換して、新しい配列に格納する方法を知るだけで済みます。残念ながら、これは私の学校での課題であり、コードをどこにも投稿することはまったく許可されていません。うまくいけば、私は理にかなっています。

4

2 に答える 2

0

最も単純な考え方で&(somePlayerVector[i])は、「有効な」アドレスが得られるはずです。

ほとんどの場合にうまくいくかもしれませんが、これはポインターを保持するための望ましい方法ではありません。

これPlayerは、アクセス時にのみ存在することが保証されています。うまくいかないことがたくさんあります: vector が再割り当てされると、メモリの場所が無効になります。

より安全な方法は、元のベクターPlayerのコピーである別のオブジェクトをターゲット配列に保持Playerすることです。これにより、取得行の後にベクターの内部データにアクセスしなくなります。Player

于 2013-09-16T09:20:24.697 に答える
0

Vaughn Cat が指摘したように、 を使用して、プレーヤーへのポインターのベクトル を作成std::vector<Player*>し、 を使用してすべてのチームのすべてのプレーヤーへのポインターを入力し、カスタム コンパレーターを使用してプレーヤーへのポインターのこのベクトルを並べ替えることができます。 &vectorOfTeams[i].getVectorOfPlayers()[j]std::sort

ここではポインタを扱うので、すべての実際のPlayer オブジェクトがまだ生きていることを確認してください。つまり、それらがローカル変数ではなく、代わりにたとえば動的に作成されることを確認してください。

于 2013-09-13T00:55:47.477 に答える