10

unordered_mapの内容を逆の順序で出力しようとしていますが、rbeginまたはrendがないため、reverse_iteratorを使用できません。unordered_mapの反転はどのように行われることになっていますか?

編集(コメントから):キーを挿入された順序にしたいので、マップを使用できません。キーは挿入順序のままであるように見えますが、逆にする必要があります。

4

6 に答える 6

11

質問の最初の文を読むだけで、答えが得られます。

unordered_mapの内容を逆順に印刷しようとしています

順序付けされていないため、任意の順序で印刷することはできません。順序付けられていない構造で順序について話すことは意味がありません。の内容が内部でどのようにunordered_map構成されているかは問題ではありません。これは実装の詳細であり、アクセスすることはできません。外の世界に対しては、unordered_map秩序をまったく示さず、それを期待することはできません。

于 2012-11-30T11:09:33.783 に答える
4

任意の双方向反復子のペアから独自の反転反復子のペアを作成できます。

std::reverse_iterator rbegin(first);
std::reverse_iterator rend(last);

@Tin が示唆したように、これは機能しません。どうでも。

于 2012-11-30T12:26:50.253 に答える
0

順序付けされていないマップのコンテンツを別の順序付けされていないマップに挿入します。データを保持するために、ペア形式で make_pair を使用して挿入することを忘れないでください。

于 2016-09-18T20:11:18.383 に答える
-1

同じ問題がありました。 unordered_map はデータを逆順に格納します

それで

map[A]=X
map[B]=Y
map[C]=Z

for(map:iterator it=begin...) を繰り返すと、次のようになります

Z
Y
X

順序を意味するので、魔女は逆です

于 2014-07-04T16:06:00.203 に答える