C++vector 迭代器查找元素返回下标

#include 
#include 
#include 
#include 
#include //算法头文件
#include 
#include 
#include 
#include 
using namespace std;

//查找元素,返回对应下标 
int findElement(vector<char> v, char key){
	int len = v.size();
	for(int i=0; i<len; i++){
		if(v.at(i) == key){
			return i;
		}
	}
	return -1;
}
//vector::iterator findElement2(vector v, char key){
//	return find(v.begin(), v.end(), key);
//}
int findElement2(vector<char> v, char key){
	vector<char>::iterator it;	//此迭代器用来判断查找元素在不在容器内 
	it = find(v.begin(), v.end(), key);
	if(it != v.end()){
		//distance计算第一个参数到第二个参数之间的距离。如果第二个参数的顺序在第一个参数前面的话,函数是会返回负值的;如果迭代器不在一个容器内,程序会抛出异常。
		return distance(v.begin(),it); 
	}
	return -1;
}


int main(){
	
	vector<char> v;
	v.push_back('a');
	v.push_back('b');
	v.push_back('c');
	v.push_back('a');
	v.push_back('a');
	
	cout<<findElement(v,'c')<<endl; 
	
	cout<<findElement2(v,'c')<<endl; 
	
	
	
	return 0;
}

你可能感兴趣的:(C++与数据结构)