这与此问题类似,但不是重复的。我正在尝试迭代地遍历一个map并打印每个元素的值,但在最后一个元素上输出略有不同。在那个问题中,他们建议使用map.rbegin().base()
,但对我来说它没有起作用。
以下是我的代码:
#include <iostream>
#include <map>
int main()
{
std::map <char, int> charMap = { {'a', 1}, {'b', 2}, {'c', 3}, {'d', 4} };
for (auto iter = charMap.begin(); iter != charMap.end(); iter++)
{
std::cout << iter->first << ":\t" << iter->second;
if (iter == charMap.rbegin().base())
std::cout << "\t//This is the last element.\n";
else
std::cout << "\n";
}
}
我期望输出结果如下所示:
a: 1
b: 2
c: 3
d: 4 //This is the last element.
但是,实际上我得到的输出是:
a: 1
b: 2
c: 3
d: 4
现在我意识到有一种更好的方法来解决这个问题,但我认为这种方法也应该可行。为什么我不能比较
iter
和charMap.rbegin().base()
?