关于函数返回一个迭代器指向找到的元素的有关问题,如果不存在要查找的值如何返回的有关问题
关于函数返回一个迭代器指向找到的元素的问题,如果不存在要查找的值怎么返回的问题
编写函数,接受一对指向vector<int> 的迭代器和一个 int 值。
在两个迭代器指定的范围中查找给定的值,返回一个迭代器指向找到
的元素。注意,程序必须处理未找到给定值的情况。
我要问的是这个未找到的情况需要怎么返回??
由于返回类型为vector<T>::const_iterator 所以如果找不到,返回一个什么值是合法的??
下面是我写的代码:
在上面的代码中,如果是要查找的值存在的情况下是没问题的,如果不存在的时候我该怎么返回?
当然上面的代码如果要查找的值不存在的话程序直接出错退出了。
![关于函数返回一个迭代器指向找到的元素的有关问题,如果不存在要查找的值如何返回的有关问题 关于函数返回一个迭代器指向找到的元素的有关问题,如果不存在要查找的值如何返回的有关问题](/default/index/img?u=aHR0cDovL3d3dy5teWV4Y2VwdGlvbnMubmV0L2ltZy8yMDE0LzA4LzIzLzEyNTcxMTEzNy5qcGc=)
------解决方案--------------------
或者返回一个空迭代器对象
使用的时候这样比较
------解决方案--------------------
iterator 是一个指向vector<int>节点的包装类,它不是指针,所以不能赋NULL。
一般找不到时要返回尾后迭代器,即 vec.end()
------解决方案--------------------
最简单的方法就是逾尾迭代器.end()
编写函数,接受一对指向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;
}
在上面的代码中,如果是要查找的值存在的情况下是没问题的,如果不存在的时候我该怎么返回?
当然上面的代码如果要查找的值不存在的话程序直接出错退出了。
------解决方案--------------------
或者返回一个空迭代器对象
vector<int>::const_iterator();
使用的时候这样比较
if(i._Myptr != NULL)
cout << *i;
------解决方案--------------------
iterator 是一个指向vector<int>节点的包装类,它不是指针,所以不能赋NULL。
一般找不到时要返回尾后迭代器,即 vec.end()
------解决方案--------------------
最简单的方法就是逾尾迭代器.end()