search_n の使用方法です.
#include <stdio.h>
#include <math.h>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
// 誤差の範囲で同じか否かのチェック
class Equal : public binary_function<double, double, bool>
{
public:
result_type operator() (first_argument_type a, second_argument_type b)
{
return (result_type)((fabs(a-b) < 0.1) ? 1 : 0);
}
};
int main()
{
vector<double> v1;
vector<double>::iterator it;
// 初期設定
printf("**初期状態 v1**\n");
v1.push_back(3.5);
v1.push_back(4.95);
v1.push_back(5.0);
v1.push_back(5.0);
v1.push_back(5.0);
for (it = v1.begin(); it != v1.end(); it++)
printf(" %f", *it);
printf("\n");
// 検索
it = search_n(v1.begin(), v1.end(), 2, 5.0);
if (it != v1.end())
printf("%f が見つかりました\n", *it);
else
printf("見つかりませんでした\n");
it = search_n(v1.begin(), v1.end(), 2, 5.0, Equal());
if (it != v1.end())
printf("%f が見つかりました\n", *it);
else
printf("見つかりませんでした\n");
return 0;
}
(出力)
**初期状態 v1**
3.500000 4.950000 5.000000 5.000000 5.000000
5.000000 が見つかりました
4.950000 が見つかりました