Giriş
Şu satırı dahil ederiz.
Örnek
Şöyle yaparız.
Şöyle yaparız.
Şu satırı dahil ederiz.
#include <boost/range/adaptor/filtered.hpp>
Nasıl Çalışır
filtered metodu filtered_range nesnesi döner. Bu nesnenin "operator |" metodu vardır. Bu metod filtered_range döner.
Metodun için şöyle
Constructor - lamda
Şöyle yaparız.
filtered metodu filtered_range nesnesi döner. Bu nesnenin "operator |" metodu vardır. Bu metod filtered_range döner.
Metodun için şöyle
template< class SinglePassRange, class Predicate >
inline filtered_range<Predicate, SinglePassRange>
operator|(SinglePassRange& r,
const filter_holder<Predicate>& f)
{
BOOST_RANGE_CONCEPT_ASSERT((SinglePassRangeConcept<SinglePassRange>));
return filtered_range<Predicate, SinglePassRange>( f.val, r );
}
Constructor - lamda
Şöyle yaparız.
vector<int> vec = {0,1,2,3,4,5,6,7,8,9,10};
auto r = vec | boost::adaptors::filtered([](auto&& v) { return v % 2; });
for (auto i: r)
std::cout << i << '\n';
}
Constructor - predicate
Aslında predicate yine lambda olarak tanımlı :)Örnek
Şöyle yaparız.
char const* input = "AABAAB";
unsigned counter{};
auto pred = [&counter](auto const&){ return ++counter % 3; };
boost::copy(
boost::make_iterator_range (input, input+strlen(input)) |
boost::adaptors::filtered (pred),
std::ostream_iterator<char>(cout)
);
Örnek
Şöyle yaparız.
std::vector<int> input;
input += 1,2,3,4,5,6,7,8,9;
boost::copy(input | filtered(is_even()),
std::ostream_iterator<int>(std::cout, ","));
Hiç yorum yok:
Yorum Gönder