c++ vector find 如何查找啊?语法是怎么写的?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ vector find 如何查找啊?语法是怎么写的?相关的知识,希望对你有一定的参考价值。
sruct student
vector<student>stu;
添加数组给
vector<student>stu;
stu.push_back()
现在的问题就是 我想查询添加在vector<student>stu;里面的数组啊,怎么写啊?看了很多关于用find的 不会用啊
如下参考:
1. 首先,打开如图中红色方框所示的软件,构造一个整型向量向量。
2.如图所示,向量的大小为0。
3.如红色方框所示,将vector元素的值修改为6个元素的值为20的向量。
4.计算结果表明,该算法成功地构造出了含有6个元素的向量。
5.如图所示,将现有vector对象的范围用作构造函数参数,并将该对象复制到另一个vector对象。
6.如图所示,程序运行结果确实显示为420。
参考技术A if(find(v.begin(), v.end(), val) != v.end())//找到
else
//没找到
val为要找的元素
本回答被提问者采纳 参考技术B #include <iostream> // std::cout#include <algorithm> // std::find
#include <vector> // std::vector
bool IsOdd (int i)
return ((i%2)==1);
int main()
int p[] = 0, 1, 2, 3, 4, 5;
std::vector<int> myvector( p, p + 6 );
std::vector<int>::iterator it;
/** @brief find() example */
// iterator to vector element:
it = find( myvector.begin(), myvector.end(), 3 );
if( it != myvector.end() ) // finded
std::cout << "The element 3 is found." << \'\\n\';
// now *it is 3. it is a iterator to int.
++it;
std::cout << "The element following 3 is " << *it << \'\\n\';
/** @brief find_if() example */
// iterator to vector element matching some condition.
it = std::find_if (myvector.begin(), myvector.end(), IsOdd);
if( it != myvector.end() ) // finded
std::cout << "The first odd value is " << *it << \'\\n\';
return 0;
find(first, last, val) 查找值为val的元素,返回迭代器
http://www.cplusplus.com/reference/algorithm/find/
find_if(first,last, pred) 查找符合某个条件的元素,返回迭代器
http://www.cplusplus.com/reference/algorithm/find_if/
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++ vector find 如何查找啊?语法是怎么写的?的主要内容,如果未能解决你的问题,请参考以下文章