1

プログラムでマップ構造を使用しています。構造のキーはタイムスタンプです。値はランダムに変化し続けます。マップを使用する主な目的は、最新のイベントが一番上に来るように、すべての値とそのタイムスタンプの表現が降順になるようにすることでした。しかし、これは起こっていません。値が目的の (降順) 順序になっていません。

次のようなマップ構造を宣言しました

map<time_t, events> eventR;
map<time_t, events>::iterator iterator;

if the events are there {
then iterator=eventR.begin();
for(iterator = eventR.begin(); iterator!=eventR.end(); ++iterator)
{
//Display
}
}

マップの構造が間違っていて、必ずしもソートされていないのかもしれませんが、タイムスタンプを使用していると、最新のイベントに応じてデータが表示されると思いました。ここで何か間違ったことをしていますか?目的の結果を得るには、別のデータ構造を使用する必要がありますか?

ありがとう

4

2 に答える 2

8

マップを次のように宣言しますstd::map<time_t, events, std::greater<time_t>>。(typedefイテレータを宣言しやすくするために a を使用します。)

rbegin()または、とを使用して逆方向にマップを繰り返しますrend()

于 2012-08-01T22:47:19.140 に答える
1

C++ std::map は、特定の並べ替え順序を保証します。

出典: http://www.cplusplus.com/reference/stl/map/

内部的には、マップ内の要素は、構築時に設定された特定の厳密な弱い順序付け基準に従って、低いキー値から高いキー値へと並べ替えられます。

于 2012-08-01T22:48:28.777 に答える