Giriş
Açıklaması şöyle
iterator_facade
iterator_facade yazısına taşıdım.
iterator_adaptor
Şöyle yaparız.
Specialized Adaptors
iterator Specialized Adaptors yazısına taşıdım.
Yardımcı Sınıflar
make_transform_iterator
transform_iterator yaratmayı kolaylaştırır. Şöyle yaparız.
Açıklaması şöyle
Iterator Facade and AdaptorThe iterator categories defined in C++98 are extremely limiting because they bind together two orthogonal concepts: traversal and element access. For example, because a random access iterator is required to return a reference (and not a proxy) when dereferenced, it is impossible to capture the capabilities ofvector<bool>::iterator
using the C++98 categories
iterator_facade
iterator_facade yazısına taşıdım.
iterator_adaptor
Şöyle yaparız.
#include <boost/iterator_adaptors.hpp>
template <typename BaseIterator>
struct Adapt : boost::iterator_adaptor<Adapt<BaseIterator>, BaseIterator> {
using base = boost::iterator_adaptor<Adapt<BaseIterator>, BaseIterator>;
using base::base;
using base::operator=;
};
Specialized Adaptors
iterator Specialized Adaptors yazısına taşıdım.
Yardımcı Sınıflar
make_transform_iterator
transform_iterator yaratmayı kolaylaştırır. Şöyle yaparız.
typedef std::map<std::string, int>::value_type value_type;
std::map<std::string, int> a;
a["one"] = 1;
a["two"] = 2;
// returns the second element
boost::function<int(value_type&)> f = boost::bind(&value_type::second, _1);
std::copy(boost::make_transform_iterator(a.begin(), f),
boost::make_transform_iterator(a.end(), f),
std::ostream_iterator<int>(std::cout, " "));
Çıktı olarak 1 ve 2 alırız.
Hiç yorum yok:
Yorum Gönder