9.4
写一个函数,参数为一对迭代器和int,从vector中寻找一个int值,返回布尔值显示是否找到。
解:
typedef vector<int>::iterator iter;
bool find_value(iter first,iter last, int value)
{
bool mark = 0;
while (first!=last)
{
if (*first == value)
{
mark = 1;
}
first++;
}
return mark;
}
int _tmain(int argc, _TCHAR* argv[])
{
vector<int> nums = { 1, 2, 3, 4, 5, 6 };
int value = 8;
cout << find_value(nums.begin(),nums.end(), value) << endl;
return 0;
}
9.5
修改前一个习题,返回寻找的元素,要考虑没有找到的情况。
解:
#include "stdafx.h"
typedef vector<int>::iterator iter;
iter find_value(iter first,iter last, int value)
{
bool mark = 0;
iter it = last ;
while (it!=last)
{
if (*first == value)
{
mark = 1;
it = first;
}
first++;
}
return it;
}
int _tmain(int argc, _TCHAR* argv[])
{
vector<int> nums = { 1, 2, 3, 4, 5, 6 };
iter it = find_value(nums.begin(), nums.end(), 5);
if (it == nums.end())
{
cout << "find nothing " << endl;
}
else
{
cout << "find: " << *it << endl;
}
return 0;
}