【发布时间】:2012-05-02 22:51:43
【问题描述】:
我正在尝试通过 std::map 反向迭代,遵循以下代码:http://www.cplusplus.com/reference/stl/map/rend/ 它说:
rend() 返回一个反向迭代器,它引用地图容器中第一个元素之前的元素,这被认为是它的反向结束。
请注意,rend 不是指与 begin 相同的元素,而是指它之前的元素。
map<float,int> m;
m.insert(pair<float,int>(.1,0));
m.insert(pair<float,int>(.4,5));
map<float,int>::reverse_iterator rend=m.rend();
map<float,int>::iterator begin=m.begin();
当我运行它时,rend 和 begin 都指向 m 的第一个元素 (.1,0),但显然它不应该,鉴于上面的通知。我觉得我犯了一些非常明显的错误,但我无法弄清楚它可能是什么。
(C++,MSVC2010)
【问题讨论】:
-
您如何确定
rend“指向”该项目? -
这不是一个明确的参考。你通过什么方式确定了rend指向的地方?如果取消引用 rend,则结果无效,因为这是未定义的行为。