3 Nisan 2018 Salı

range utilities iterator_range Sınıfı

Giriş
Şu satırı dahil ederiz.
#include <boost/range/iterator_range.hpp>
İki iterator aralığını range olarak temsil eder. range algoritmaları yanında yardımcı bir sınıftır. Açıklaması şöyle
iterator_range is bridge between ranges and iterators. For instance - you have pair of iterators, and you want pass them to algorithm which only accepts ranges. In that case you can wrap your iterators into range, using iterator_range. Or better - make_iterator_range - it will help to deduce types (like std::make_pair does):
Constructor
Örnek
Şöyle yaparız.
const char* s = ...;
boost::iterator_range<std::string::const_iterator> range {s, s + 10};
Örnek - make_iterator_range
Şu yöntemi kullanır.
make_iterator_range(iterator1,iterator2)
Şöyle yaparız.
Array arr={11,22,33,44,55,66,77,88};
boost::for_each( make_iterator_range(arr,arr+5) ,print());
empty metodu
Şöyle yaparız
std::vector<int> is { 1,2,3 };
auto range = boost::make_iterator_range(is.begin(), is.end());
std::cout << "range empty? " << std::boolalpha << range.empty() << "\n";

range = boost::make_iterator_range(is.end(), is.end());
std::cout << "range empty? " << std::boolalpha << range.empty() << "\n";

is.clear();

range = {};
std::cout << "range empty? " << std::boolalpha << range.empty() << "\n";
Çıktı olarak şunu alırız.
range empty? false
range empty? true
range empty? true

Hiç yorum yok:

Yorum Gönder