我在程序中使用了地图结构。结构的关键是时间戳。值随机变化。我使用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
}
}
可能是我已经理解了地图结构错误,就像它没有必然排序一样,但我想如果我使用时间戳,那么数据将根据最新事件显示。我在这里做错了吗?我是否必须使用不同的数据结构才能获得所需的结果?
谢谢
答案 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/
在内部,地图中的元素从低到高排序 遵循特定严格弱排序标准的键值 构造