C++ find()
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ find()相关的知识,希望对你有一定的参考价值。
#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;
为什么还是不对啊~~~
我觉得应该输出111和222,因为都没找到啊,但为什么输出的是111和111啊?
一句话,find如果没有找到,返回什么,是不是search的原来的值啊,还是其他的什么?
#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 search2=47;
t1=find(&ia[0],&ia[6],search2);
cout<<*t1<<endl;
-------------
刚才已经强调过了,既然你用的是原始数组,就不应该用vector的迭代器.我不知道你用的什么编译器,我用的GCC,你那样写就是编译错误,改为int*的指针就可以了.
另外find找不到返回的是你指定的尾部迭代器,比如t1=find(&ia[0],&ia[6],search2); 就会返回ia[6],如果是stl容器的话,返回一个这样的迭代器不会有问题,但是你用的是数组,返回的就是一个未知的元素:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
int search1=111;
int ia[6]=27,210,12,47,109,83;
//vector<int>::iterator it1;
int *it1,*it2;
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;
cout<<it1[-1]<<" "<<it2[-1]<<endl;
参考技术A 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;
参考技术B 楼上讲的很好,有一点不太对,int ia[6]=27,210,12,47,109,83;只有六个元素,所以find( &ia[0],&ia[6],search1 );
ia[5]就是数组最大值,按照迭代器找不到返回最后一个值(xxx.end()),上面最后一个值即ia[6].
是数组越界的情况,这也就是为什么楼主每次找不到都输出同样值的情况(该值就ia[6])。
以上是关于C++ find()的主要内容,如果未能解决你的问题,请参考以下文章