【问题标题】:How to start at end of map [closed]如何从地图末尾开始[关闭]
【发布时间】:2013-12-12 17:35:02
【问题描述】:

我希望能够从std::map 的末尾开始,以便首先检查列表末尾的项目,例如...

std::map<int> MapBasicExample;

MapBasicExample.insert(1);
MapBasicExample.insert(2);
MapBasicExample.insert(3);
MapBasicExample.insert(4);
MapBasicExample.insert(5);

当我使用MapBasicExample.begin() 时,首先检查的是值“5”,我想首先在循环中从 1 到 5 而不是像使用 MapBasicExample.begin() 时那样从 5 到 1,怎么能这个可以吗?

【问题讨论】:

  • 你的例子完全被打破了。地图具有键 值,并且固有地按升序排序。所以你说的没有任何意义。
  • 大概你的意思是set,而不是map;并且该地图应按 1-5 排序。在任何情况下,使用rbeginrend 向后迭代。
  • @Lightness Races in Orbit,这是为了更好地解释我自己和我想要的东西,而不是像你在示例中清楚地看到的那样呈现任何类型的代码 - 因此是问题所在。我得到了我的答案,所以看来它毕竟是有道理的。
  • @user2142260 -1 SO 不是让任何人得到他们的答案,而是对社区有用。要使一个问题有用,它必须满足最低标准。你的没有,也应该关闭。

标签: c++ visual-studio-2010 visual-c++


【解决方案1】:

您可以像这样以相反的顺序迭代地图:

for (auto it = MapBasicExample.rbegin(); it != MapBasicExample.rend(); it++) {
    std::cout << it->first << " = " << it->second << std::endl;
}

记住地图有键和值。你的例子看起来像一个集合。不过,以相反顺序迭代它们的逻辑是相似的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    相关资源
    最近更新 更多