地图容器M.end()如何在此代码中工作?是它返回地图的最后一个vaue

时间:2016-01-28 05:00:09

标签: c++11 dictionary

 map < string , int > M;

 M["Top"] = 1; 

 M["Coder"] = 2; 

 M["SRM"] = 10; 

 int x = M["Top"] + M["Coder"]; 

 if(M.find("SRM") != M.end()) { 

      M.erase(M.find("SRM")); // or even M.erase("SRM") 
 } 

2 个答案:

答案 0 :(得分:1)

如果在M中找不到元素,则find()返回M.end()。 M.end()指向容器的最后一个元素后面的元素,它是一个 边界迭代器(没有数据在这个位置)。

请参阅:

http://en.cppreference.com/w/cpp/container/map/find http://en.cppreference.com/w/cpp/container/map/end

答案 1 :(得分:0)

代码工作正常,当在地图中找到字符串“SRM”时,它将从中删除。因为当方法find()找不到值时,它返回一个指向容器末尾的迭代器。 也许你可以重新提出问题,更准确地说是你想要达到的目标。