C++中vector、unordered_map等不同容器的迭代器中end()的指向问题
前言
今天刷力扣看见这样一行代码if (mp.find(x - 1) != mp.end())
,我一直想为什么要判断和最后一个元素等不等呢?纠结了好久,后面才发现我对end()
的指向问题一直搞错了,我一直以为指向的是末尾最后一个元素(就像begin()
一样指向一个元素)。
正文
通俗的讲end()
并没有指向一个元素,或者可以说是指向一个空的位置,即end()
函数返回的不是指向最后一个元素的迭代器,而是指向最后一个元素后面的位置的迭代器。在遍历迭代器的过程中也不会遍历到end()
。以下面的代码为例,
unordered_map<int, int> mmap{
{