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

C++语言 码拜 8年前 (2016-06-07) 1111次浏览
先上图

#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;
}

C++顺序容器中一个有趣的问题
小弟查了一下,代码逻辑没有出错误,为什么会这样呢?C++顺序容器中一个有趣的问题

解决方案

20

函数返回了 end ,然后你对 end 解引用出错

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C++顺序容器中一个有趣的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)