检查地图条目是否在基于的范围内的最后一个?

时间:2014-04-15 15:13:18

标签: c++ for-loop map range

我更喜欢以与此answer相同的方式遍历c ++ map

for (auto& kv : myMap) {
    std::cout << kv.first << " has value " << kv.second << std::endl;
}

使用基于范围的方法,是否可以确定kv是范围中的最后一个元素?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:6)

您可以获取地图中的最后一个密钥并进行检查。

const auto& lastKey = myMap.rbegin()->first;
for (auto& kv : myMap) {
    if(kv.first == lastKey) {
        std::cout << "The last one" << std::endl;
    }
    std::cout << kv.first << " has value " << kv.second << std::endl;
}

如果你需要倒数第二个或类似的东西,你也可以使用std::prevreference):

const auto& lastKey = std::prev(myMap.end(),2)->first; // gives the 2nd last