私はC++でゲームアプリケーションを作成しています。私は2次元のstd::vector
をTile
のオブジェクトとして表現したマップを持っています。2D std :: vectorで行/列を移動する最も効率的な方法
プレーヤーの移動に合わせて地図を更新する必要があります。私は、例えば、ローカルクライアントのマップに配置する必要が世界地図の新しい部分で行または列を取得するサーバアプリケーションから:
図1ではプレイヤーが移動する前に、ローカルマップがあります。一番上の行は、オブジェクト1、2の中心と0の下に塗りつぶされます。プレイヤーが上に移動すると、オブジェクト3でいっぱいになった新しい上の行が表示され、他のすべてが下に移動し、前の一番下の行が消えます。
ループはfor
というループで必要なオブジェクトを移動するだけでできますが、標準ライブラリにはすでにアルゴリズムがあるか、この種の変更を達成するために多くの効率的な方法があると思いました。
EDIT:
申し訳ありませんが、私は、行のために、列のため、この操作を行うとの違いが、実際にはそこにあるだろうと認識していませんでした。だから私は時にはコラムのためにそれをする必要があるので、私もタイトルを編集しました。
'std :: vector>'はありますか?どのディメンションが列を表しますか?どちらの行は行ですか?これは重要です。なぜなら、2番目の次元が行を表す場合、この「上」コマンドを実現するのは簡単だからです。行1と2を入れ替えることができます。次に、行1と3を入れ替えて、行1を置き換えます。スワップは、ベクトルのポインタを排他的論理和(XOR)して効率的に実装することができます。 –
Carsten