1、C++ find()函数用法(一般用于vector的查找)
--find()函数主要实现的是在容器查找指定的元素,并且这个元素必须是基本数据类型的。
--查找成功时返回一个指向指定元素的迭代器,查找失败时返回end迭代器。
1)在数组中进行查找
#include#include #include using namespace std; int main() { int nums[]={3,1,4,1,5,9}; int nums_to_find=5; int start=0; int end=5; int *result=find(nums+start,nums+end,nums_to_find); if(result==nums+end) { cout<<"Did not find any number matching"<
2)在容器中查找
#include#include #include using namespace std; int main() { int num_to _find=25; int i; vector v; for(i=0;i<10;i++) v.push_back(i*i); vector ::iterator iter=std::find(v.begin(),v.end(),num_to_find);//返回的是一个迭代器指针 if(iter==v.end()) cout<<"ERROR"< 2、那么什么是vector呢?
作用:vector能够像容器一样存放各种类型的对象,也就是说vector能存放任意类型的动态数组,能够增加和压缩数据
1)如果表示的向量长度较长(需要向向量内保存很多数),容易导致内存泄露,而且效率低下;
2)vector作为函数的参数或者返回值时,需要注意它的写法:
double Distance(vector
&a,vector &b)其中的“&”绝对不能少!!!!! 3)建立一个vector
vector
test;//建立一个vector,int为数组元素的类型,test为动态数组名 4)向数组中压入元素n
test.push_back(n);//此时test[0]就是n,
5)#include
//需要加入头文件 6)使用下标访问该动态数组
cout<
7)使用迭代器访问元素
vector
::iterator iter; for(iter=test.begin();iter!=test.end();iter++)
cout<<(*iter)<
8)向该数组中第(i+1)元素前插入元素a
test.insert(test.begin()+i,a);
9)删除第(i+1)个元素
test.erase(test.begin()+i)
test.erase(test.begin()+i,test.end()+j);//删除区间【i,j-1】;
10)
test.size();//向量大小
11)
test.clear();//清空
12)
vector的元素不仅仅可以是int,double,string还可以是结构体,但是结构体必须定义为全局的,否则会出现错误;
13) 使用reversee翻转:需要加头文件#include
reverse(test.begin(),test.end());
14) 使用sort排序:需要头文件#include
sort(test.begin(),test.end());//按升序排列
3、蓝桥杯赛题实战
两个整数做除法,有时会才产生循环小数,其循环部分称为循环节。比如(11/13=0.8461584615.......)循环节为846153共有6位。
求循环节数:
#include#include #include using namespace std; int f(int n,int m) { n=n%m; vector v; for(;;) { v.push_back(n); n=n*10; n=n%m; if(n==0) return 0; if(find(v.begin(),v.end(),n)!=v.end()) { return (int)(v.end()-find(v.begin(),v.end(),n)); } } } int main() { int n,m; cin>>n>>m; cout< 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)