假设我有std :: pair的STL容器.有没有办法使用boost来调整对的第二个STL算法lambda?
std::vector<std::pair<int, SomeStruct>> vec;
const auto Predicate = [](SomeStruct const& s) { ... };
auto it = std::find_if(vec.begin(), vec.end(), boost-magic(Predicate));
Run Code Online (Sandbox Code Playgroud)
无需提升.您可以简单地编写一个lambda或一个命名的函数对象:
const auto Predicate2 = [&Predicate](std::pair<int, SomeStruct> const& s) {
return Predicate(s.second);
};
auto it = std::find_if(vec.begin(), vec.end(), Predicate2);
Run Code Online (Sandbox Code Playgroud)
当然,如果Predicate仅在这种情况下使用过,那么将它写成直接接受一对就更有意义了.