我更喜欢以与此answer相同的方式遍历c ++ map
:
for (auto& kv : myMap) {
std::cout << kv.first << " has value " << kv.second << std::endl;
}
使用基于范围的方法,是否可以确定kv
是范围中的最后一个元素?如果是这样,怎么样?
答案 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::prev
(reference):
const auto& lastKey = std::prev(myMap.end(),2)->first; // gives the 2nd last