Как правильно должна выглядеть конструкция в C++11:
find_if(l1.begin(), l1.end(), bind2nd(less<int>(),7));
?
Вот это вызывает проблемы:
int x = 7;
find_if(l2.begin(), l2.end(), bind(&less<int>(),&x,_2);
Здравствуйте, eiler13, Вы писали:
E>Как правильно должна выглядеть конструкция в C++11:
E>E>find_if(l1.begin(), l1.end(), bind2nd(less<int>(),7));
E>
E>?
E>Вот это вызывает проблемы:
E>E>int x = 7;
E>find_if(l2.begin(), l2.end(), bind(&less<int>(),&x,_2);
E>
bind(less<int>(), _1, 7)
или может bind(less<int>(), 7, _1), хз что именно Вам надо
я бы юзал [](int x){ return x < 7; }
Разные варианты:
#include <boost/range/algorithm.hpp>
#include <boost/phoenix.hpp>
#include <functional>
#include <algorithm>
#include <iostream>
#include <ostream>
#include <vector>
using namespace std;
using namespace placeholders;
using boost::phoenix::arg_names::arg1;
int main()
{
vector<int> v{7,7,7,1,2,3};
cout << *find_if(v.begin(), v.end(), bind2nd(less<int>(),7)) << endl;
cout << *find_if(v.begin(), v.end(), bind(less<int>(),_1,7) ) << endl;
int x = 7;
cout << *find_if(v.begin(), v.end(), bind(less<int>(),_1,ref(x)) ) << endl;
cout << *find_if(v.begin(), v.end(), arg1 < 7 ) << endl;
cout << *boost::find_if(v, arg1 < 7 ) << endl;
}
Здравствуйте, eiler13, Вы писали:
A>>я бы юзал [](int x){ return x < 7; }
E>а как эту lambda-функцию передать в find_if ?
find_if(v.begin(), v.end(), [](int x){ return x < 7; } )
А в
будущем, возможно даже так:
find_if(v.begin(), v.end(), [](x) x < 7 )
аж слюнки потекли