1

我在我的程序中使用地图结构。该结构的关键是时间戳。值不断随机变化。我使用 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
}
}

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

谢谢

4

2 回答 2

8

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

rbegin()或者,使用and反向迭代您的地图rend()

于 2012-08-01T22:47:19.140 回答
1

C++ std::map 确实保证了一定的排序顺序:

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

在内部,map 中的元素按照构造时设置的特定严格的弱排序标准从低到高的键值排序。

于 2012-08-01T22:48:28.777 回答