map.end()error" iterator not dereferenceable" C ++

时间:2017-08-23 21:42:23

标签: c++ dictionary

//Works    
cout << "map[0] value is " << doubleStatsMap.begin()->first<< endl;
//gives error
cout << "map[last value is " << doubleStatsMap.end()->first << endl;

我只是想获取地图最后一个元素的值。它正常工作  &#34; map.begin-&gt;首先&#34; 但是给出了#34; map / set iterator而不是dereferencable&#34;为了  &#34; map.end() - &gt;首先&#34 ;.  它不能为空,因为地图有一个开头因此它有一个结束。我读过的所有内容都说这应该有效。任何建议都非常感谢!

1 个答案:

答案 0 :(得分:2)

尝试从 end 迭代器获取任何内容会导致未定义的行为。

要获取最后一项,您可以使用std::map::rbegin()

// cout << "map[last value is " << doubleStatsMap.end()->first << endl;
cout << "map[last value is " << doubleStatsMap.rbegin()->first << endl;