C++ primer第四版 有一路题目不太明白.

C++ primer第四版 有一道题目不太明白..
vector<int>::const_iterator find_val(
  vector<int>::const_iterator beg, 
  vector<int>::const_iterator end, 
  int value, 
   vector<int>::size_type &occurs)
{
  vector<int>::const_iterator res_iter = end;
  occurs = 0; 
  for ( ; beg != end; ++beg)
  if (*beg == value) {
  if (res_iter == end)
  res_iter = beg;
  ++occurs;
  }
  return res_iter; 
  }

if (res_iter == end) 这句什么意思?不是之前已经赋值为end了吗.为什么还有用if判断呢
c++ iterator

------解决方案--------------------
你看for循环,如果for循环里面的if (*beg == value)第一次执行,那么这条语句就会执行:res_iter = beg;,res_iter的值就会改变,然而这个时候beg不一定等于end,所以for循环继续执行,这个时候判断语句:if (res_iter == end)就很必要了。楼主再好好酝酿下吧。