0

内部に std::map を保持するクラスを開発しています。今では機能は最適でしたが、今ではマップを回転させる必要があります。つまり、それらの値に対応する値に加えて、マップ要素 ID を使用して変更順序を回転させることです。 、例:

与えられた:

Map[122]=1
Map[12]=2
Map[3]=45

回転アルゴリズムを 1 回適用する:

Map[12]=2
Map[3]=45
Map[122]=1

回転アルゴリズムを再度適用します。

ええと、私の最初の意図は、この操作を実行するアルゴリズムを書くことですが、私は c++ の新機能です。

Map[3]=45
Map[122]=1
Map[12]=2

stl ライブラリには、今では見ることができない適切な解決策がありますか? どうも

4

3 に答える 3

4

いいえ。

マップ要素の順序は、ユーザーが制御できるものではありません。ソートキーに基づいた固有のものです。

もちろん、コンテナの基本的な順序を操作するために、独自のコンパレータを提供できます。

ただし、マップ内の順序に依存するべきではありません。これはシーケンス コンテナーではなく、順序をプロパティとして使用するようには設計されていません。

この「ローテーション」の代わりに、毎回コンテナー内の別の場所で反復を開始し、「ラップアラウンド」してみませんか?

于 2013-08-14T20:55:41.553 に答える
0

私が正しいと信じているLightnessの答えを拡張するために。マップをこれ以上制御したくない場合は、static matrix代わりに a を使用する必要があります。

cyclicalマトリックスは、実装しようとしている回転の代わりに、単純な数学を使用してより多くの回転オプションを提供します。

于 2013-08-14T21:08:21.023 に答える