find函数和distance函数都是算法库里的函数
包含在头文件algorithm中, 算是STL的内容
只介绍最简单的用法
find函数有三个参数, 分别代表
(起点, 终点后一位, 要找的数)
返回一个地址
可以是容器, 或者数组
如果没有找到, 则返回终点后一位的地址
找到了, 返回区间[first,end)中第一个值等于value的元素的地址
进阶版本是find_if()函数
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector <int> v;
for(int i = 0; i < 10; ++i) {
v.push_back(i);
}
vector <int> ::iterator it = find(v.begin(), v.end(), 9);
if(it != v.end()) cout << "在当前vector中\n";
else cout << "不在当前vector中\n";
cout << endl;
int a[10];
for(int i = 0; i < 10; ++i)
a[i] = i;
int *p = find(a, a + 10, 10);
if(p == a+10) cout << "不在这个数组中\n";
else cout << "在这个数组中\n";
}
find_if()函数
#include <bits/stdc++.h>
using namespace std;
bool cmp(int n)
{
return (n > 3 && n < 19);
}
int main()
{
int a[10];
for(int i = 0; i < 10; ++i) {
a[i] = i;
}
cout << *find_if(a, a+10, cmp);
}
distance是返回容器中两个地址之间的距离
参数为(地址, 地址)
返回值为整型
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a[10];
int dis = distance(a, a+2);
cout << "距离为: " << dis << endl;
for(int i = 0; i < 10; ++i) {
a[i] = i;
}
cout << "该数组中, 2和7的距离是: \n";
cout << distance(find(a, a+10, 2), find(a, a+10, 7));
}