转载自:http://topic.csdn.net/u/20100706/14/532c4158-e8ba-4378-9673-f9ca6fd7982b.html
int GetParamIndex(std::string bankid)
{
vector<TBankItem>::iterator iter;
TBankItem *item;
int i=0;
for(iter = begin();iter != end(); ++iter,++i)
{
item = &(*iter);
if (item->BankID == bankid)
return i;
}
return -1;
}
如上面函数,是自己遍历了整个vector,有什么方式可以不自己遍历,而用stl算法实现该功能呢?
// find example
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main () {
int myints[] = { 10, 20, 30 ,40 };
int * p;
// pointer to array element:
p = find(myints,myints+4,30);
++p;
cout << "The element following 30 is " << *p << endl;
vector<int> myvector (myints,myints+4);
vector<int>::iterator it;
// iterator to vector element:
it = find (myvector.begin(), myvector.end(), 30);
++it;
cout << "The element following 30 is " << *it << endl;
return 0;
}
Output:
The element following 30 is 40The element following 30 is 40
class A
{
public:
string str;
};
bool comp(const A& a, const string& str)
{
return a.str == str;
}
int getIndex(vector<A>& vec, string& str)
{
vector<A>::const_iterator it = find_if(vec.begin(), vec.end(), bind2th(comp, str));
if ( it== vec.end()) return -1;
return distance(vec.begin(), it);
}