C++的迭代器的end()为啥指向最后元素的下一个位置?

空容器怎么办?
■网友
因为实际应用的时候确实需要这个只想最后元素下一个的end()。比如find的时候,找到了给你返回pair(里面是key和值),找不到的时候给你返回什么呢?比如一个只有一个元素的容器,那begin()和end()不是指向相同了,这样无法写出for循环了吧?虽然这些问题可以用一些手段解决,但是不通用不简洁,所以end()指向结尾后一个是很合理的
■网友
\tmap\u0026lt;string, int\u0026gt; wordCount;\twordCount.insert(make_pair("chinese",200));\twordCount.insert(make_pair("english", 9));\twordCount.insert(make_pair("frence",100));\twordCount = 80;\twordCount = 19; map\u0026lt;string, int\u0026gt;::iterator it = wordCount.begin();\tint count = wordCount.count("spanish");\tcout \u0026lt;\u0026lt; count \u0026lt;\u0026lt; endl;\tit = wordCount.find("spanish");\tif (it != wordCount.end()) //只能这么判断,无法用it!= NULL\t{\t\tcout \u0026lt;\u0026lt; it-\u0026gt;second \u0026lt;\u0026lt; endl;\t\tcout \u0026lt;\u0026lt; wordCount.end()-\u0026gt;first.c_str()\u0026lt;\u0026lt;endl; //此处会报错\t}\telse\t{\t\tcout \u0026lt;\u0026lt; "none" \u0026lt;\u0026lt; endl;\t} 【C++的迭代器的end()为啥指向最后元素的下一个位置?】

■网友
如果当你要查找的是最后一个元素,用==就无法判断到底是找到了还是没找到了。


    推荐阅读