C++ primer第四版 有一路题目不太明白.
C++ primer第四版 有一道题目不太明白..
if (res_iter == end) 这句什么意思?不是之前已经赋值为end了吗.为什么还有用if判断呢
------解决方案--------------------
你看for循环,如果for循环里面的if (*beg == value)第一次执行,那么这条语句就会执行:res_iter = beg;,res_iter的值就会改变,然而这个时候beg不一定等于end,所以for循环继续执行,这个时候判断语句:if (res_iter == end)就很必要了。楼主再好好酝酿下吧。
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)就很必要了。楼主再好好酝酿下吧。