Sweety

Practice makes perfect

导航

数组中元素查找和find()函数

Posted on 2015-01-24 20:40  蓝空  阅读(1826)  评论(0编辑  收藏  举报

1、字符数组查找

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <cstring>
#include <algorithm>  
#include <iostream>
using namespace std;
int main()
{
string str;
int n;
char ch;
cin>>str;
getchar();
scanf("%c",&ch);
cout<<str.find(ch)+1;
  return 0;
}


2、整型数组元素查找

(1)最一般的查找方式,直接循环查找  

(2)使用vector查找

       

#include <iostream>
#include <vector>
#include <cstdio>
#include <algorithm>
using namespace std;
int main(){
        int x,n;
		scanf("%d",&n);
        vector<int> v;//要查找的元素,类型要与vector<>类型一致
        for(int i=0;i<n;i++)
          {
          	
          	scanf("%d",&x);
            v.push_back(x);
		  }
		 scanf("%d",&x); 
       vector<int>::iterator iter=std::find(v.begin(),v.end(),x);//返回的是一个迭代器指针
        if(iter==v.end())
            cout<<-1;
        else               //注意迭代器指针输出元素的方式和distance用法
            cout<< distance(v.begin(), iter)+1 ;
        return 0;
}

 直接使用int类型的数组只能返回数组里有没有该元素,所以若查找具体位置需要用vector,如:

#include <iostream>
#include <vector>
#include <algorithm>//注意要包含该头文件
using namespace std;
int main()
{
    int nums[] = { 3, 1, 4, 1, 5, 9 };
    int* result = find( nums , nums + 5,3 );
    if( result == nums + 5 ) 
        cout<< "Did not find any number matching " << endl;
    else
         cout<< "Found a matching number: " << *result << endl;
    return 0;
}