Code Bye

C++顺序容器中一个有趣的问题

先上图
#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 解引用出错

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C++顺序容器中一个有趣的问题