Что ж, если у вас есть Visual Studio 2008, то вы не можете использовать лямбда-функцию, я думаю, правильный способ сделать это:
int wanted_index = 11;
struct Data
{
int Id;
std::vector<int> SomeData
}
bool find_fun(int i)
{
return i == wanted_index;
}
//std::vector<Data> dataList = ....
std::find(dataList.begin(), dataList.end(), find_fun);
Вы также можете использовать boost bind или std :: tr1 bind, чтобы получить lambdaфункционировать как синтаксис.Как видно из документации MSDN Visual Studio 2008, вы можете использовать std :: bind () также см. http://msdn.microsoft.com/en-us/library/bb982702(v=vs.90).aspx
, поэтому вы можете использовать:
bool find_fun1(int i, int wanted_index)
{
return i == wanted_index
}
int wanted_index = 11;
std::find_if(dataList.begin(), dataList.end(), std::bind(find_fun1,_1,wanted_index));