关于函数返回一个迭代器指向找到的元素的有关问题,如果不存在要查找的值如何返回的有关问题

关于函数返回一个迭代器指向找到的元素的问题,如果不存在要查找的值怎么返回的问题
编写函数,接受一对指向vector<int> 的迭代器和一个 int 值。
在两个迭代器指定的范围中查找给定的值,返回一个迭代器指向找到
的元素。注意,程序必须处理未找到给定值的情况。

我要问的是这个未找到的情况需要怎么返回??
由于返回类型为vector<T>::const_iterator  所以如果找不到,返回一个什么值是合法的??
下面是我写的代码:
#include <iostream>
#include <vector>

using std::cout;
using std::cin;
using std::endl;
using std::vector;

//在 vector<int> 中查找 key。存在返回指向元素的迭代器。
vector<int>::const_iterator findkey(vector<int>::const_iterator b, vector<int>::const_iterator e, const int key)
{
while (b != e)
{
if (*b == key)
{
return b;
}
++b;
}
}

int main()
{
vector<int> iVector{ 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 };
int index;

cout << "请输入要查找的整数:";
cin >> index;

vector<int>::const_iterator i = findkey(iVector.cbegin(), iVector.cend(), index);

cout << *i;

return 0;
}


在上面的代码中,如果是要查找的值存在的情况下是没问题的,如果不存在的时候我该怎么返回?
当然上面的代码如果要查找的值不存在的话程序直接出错退出了。
关于函数返回一个迭代器指向找到的元素的有关问题,如果不存在要查找的值如何返回的有关问题


------解决方案--------------------
引用:
可以直接用slt算法啊

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int a[] = { 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 };
vector<int> iVector(a, a + 10);
int index = 900;

vector<int>::const_iterator it = find(iVector.begin(), iVector.end(), index);

if(it != iVector.end())
cout << *it;

return 0;
}


如果非要自己写的话直接这样返回

return e;

输出的时候比较一下就是了

if(i != iVector.end())
cout << *i;

或者返回一个空迭代器对象

vector<int>::const_iterator();

使用的时候这样比较

if(i._Myptr != NULL)
cout << *i;

------解决方案--------------------
iterator 是一个指向vector<int>节点的包装类,它不是指针,所以不能赋NULL。

一般找不到时要返回尾后迭代器,即 vec.end()
------解决方案--------------------
最简单的方法就是逾尾迭代器.end()