先上图
#include <vector>
#include <iostream>
using namespace std;
#define item vector<int>::iterator
item search(item beg, item end, int val)
{
for (; beg != end; beg++)
if (*beg == val)
return beg;
return end;
}
int main()
{
vector<int> list = {
4, 3, 99, 10, 5, 7
};
item it = search(list.begin(),list.end(), 25);
cout << *it << endl;
it = search(list.begin(),list.end(), 10);
cout << *it << endl;
return 0;
}

小弟查了一下,代码逻辑没有出错误,为什么会这样呢?
解决方案
20
函数返回了 end ,然后你对 end 解引用出错