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()为啥指向最后元素的下一个位置?】
■网友
如果当你要查找的是最后一个元素,用==就无法判断到底是找到了还是没找到了。
推荐阅读
- 江海|
- 非计算机专业想要利用课余时间深入自学C++,想要找到比较体面的工作大概需要啥水平
- 能和 Google Calender 方便双向同步的 iOS 日程管理软件有哪些最好也支持iPad
- Java工程师和C++工程师在工作上有啥区别哪个更适合自身发展
- 有解析解,为啥还要迭代算数值解
- C、C++、java等编程语言都有哪些坑
- c++写http服务器不用cgi和apache该用啥
- 通信技术迭代是否过快指的是手机通信从2G向5G的过渡
- 看完c++ primer plus 还有必要再买本c++ primer看吗?
- 有人可以把C,C++,Python等编程语言开发出来,而我们却难以精通,这说明了啥问题
