28 Temmuz 2016 Perşembe

boost range

boost::irange Sınıfı
s setinde olmayan sayılar resultVector'e eklemek için şöyle yaparız
auto abRange = boost::irange(a,b+1);
std::set_difference(abRange.begin(), abRange.end(), 
                    s.lower_bound(a), s.upper_bound(b), 
                    std::back_inserter(resultVector));
irange verilen aralık için hafıza harcıyor counting_range ise harcamıyor.

boost::make_iterator_range metodu
Verilen iki iterator'ü range haline getirilerek algoritmalarda kullanılabilir. Vector için şöyle yaparız.
std::vector<std::string> s { "bob", "hey", "joe", "doe" };
 std::vector<std::string> d;

 for (auto i = std::begin(s); i != std::end(s); ++i) {
     d.push_back(boost::algorithm::join(
         boost::make_iterator_range(std::begin(s), i + 1), 
         std::string(" ")
     ));
 }
Şu çıktıyı alırız.
bob
bob hey
bob hey joe
bob hey joe doe
Map için şöyle yaparız.
tMyMap const& my_map; // NOTE const
// ...
boost::make_iterator_range(my_map.lower_bound(123), mymap.upper_bound(456));
filtered Sınıfı
range adaptors yazısına taşıdım.

sliced Sınıfı
range adaptors yazısına taşıdım.

Hiç yorum yok:

Yorum Gönder