地图结构也支持排序?

时间:2012-08-01 22:44:33

标签: c++ data-structures

我在程序中使用了地图结构。结构的关键是时间戳。值随机变化。我使用map的主要目的是确保所有值的表示以及它们的时间戳应该按降序排列,就像最新的事件应该是最重要的。但是,这种情况并没有发生。这些值不是所需的(降序)顺序。

我已经声明了地图结构,如

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
}
}

可能是我已经理解了地图结构错误,就像它没有必然排序一样,但我想如果我使用时间戳,那么数据将根据最新事件显示。我在这里做错了吗?我是否必须使用不同的数据结构才能获得所需的结果?

谢谢

2 个答案:

答案 0 :(得分:8)

将地图声明为:std::map<time_t, events, std::greater<time_t>>。 (使用typedef以便更容易声明迭代器。)

或者,使用rbegin()rend()反复迭代地图。

答案 1 :(得分:1)

c ++ std :: map确保了某种排序顺序:

来自:http://www.cplusplus.com/reference/stl/map/

  

在内部,地图中的元素从低到高排序   遵循特定严格弱排序标准的键值   构造