C++ find()

来源:百度知道 编辑:UC知道 时间:2024/05/25 05:05:41
#include<iostream.h>
#include<vector>
#include<algorithm>
using namespace std;
void main()
{
int search1=98;
int ia[6]={27,210,12,47,109,83};

vector<int>::iterator it1;
it1=find(&ia[0],&ia[6],search1);
cout<<*it1<<endl;

int search2=88;
int* t1;
t1=find(&ia[0],&ia[6],search2);
cout<<*t1<<endl;
}
为什么输出的都是98?
能不能再介绍一下find用法,主要是如果找不到返回什么?为什么地址要多一位啊“&ia[6]”
谢谢大家~~~
#include<iostream.h>
#include<vector>
#include<algorithm>
using namespace std;
void main()
{
int search1=111;
int ia[6]={27,210,12,47,109,83};

vector<int>::iterator it1;
it1=find(&ia[0],&ia[6],search1);
cout<<*it1<<endl;

int search2=222;
vector<int>::iterator it2;
it2=find(&ia[0],&ia[6],search2);
cout<<*it2<<endl;
}

STL的find,find_if函数提供了一种对数组、STL容器进行查找的方法。
使用该函数,需 #include <algorithm>
查找一个list中的数据,通常用find(),例如:
using namespace std;
int main()
{
list<int> lst;
lst.push_back(10);
lst.push_back(20);
lst.push_back(30);
list<int>::iterator it = find(lst.begin(), lst.end(), 10); // 查找list中是否有元素“10”
if (it != lst.end()) // 找到了
{
// do something
}
else // 没找到
{
// do something
}
return 0;
}

find返回的是对应区间中元素的迭代器,但是这个容器和容器的迭代器类型要是匹配的,你用一个vector<int>的迭代器去接受一个int指针显然错误,原始数组对应的迭代器就是原始的指针,就像你后一个搜索用的那样:
#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int search1=210;
int ia[6]={27,210,12,47,109,83};
int* t1;

t1=find(&ia[0],&ia[6],search1);
cout<<*t1<<endl;

int search