![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
boost/python/stl_iterator.hppBoost , Boost.Python Reference Manual , Chapter 2. High Level Components
|
Параметр шаблона |
Требования |
Семантика |
по умолчанию |
---|---|---|---|
Ценностный тип |
Ценностный тип должен быть CopyConstructible. |
Отказ от ссылки на экземпляр< |
Нет |
namespace boost { namespace python { template <class ValueType> struct stl_input_iterator { typedef std::ptrdiff_t difference_type; typedef ValueType value_type; typedef ValueType* pointer; typedef ValueType reference; typedef std::input_iterator_tag iterator_category; stl_input_iterator(); stl_input_iterator(object const& ob); stl_input_iterator& operator++(); stl_input_iterator operator++(int); ValueType operator*() const; friend bool operator==(stl_input_iterator const& lhs, stl_input_iterator const& rhs); friend bool operator!=(stl_input_iterator const& lhs, stl_input_iterator const& rhs); private: object it; // For exposition only object ob; // For exposition only }; }}
stl_input_iterator()
Создает итератор ввода прошедшего конца, полезный для обозначения конца последовательности.
<this
>Прошлый конец
Ничего.
stl_input_iterator(object const& ob)
Вызывает ob.attr("__iter__")() и сохраняет полученный объект итератора Python в этом->it. Затем, называет это->it.attr("следующий")() и сохраняет результат в этом->ob. Если последовательность исчерпана, задает этот->ob объекту().
Это отвратительный или прошедший конец.
stl_input_iterator &operator++()
Называется this->it.attr("следующий")() и сохраняет результат в this->ob. Если последовательность исчерпана, задает этот->ob объекту().
Это отвратительный или прошедший конец.
<*this
>
stl_input_iterator &operator++(int)
<stl_input_iteratortmp=
*this;++*this;returntmp;
>
Это отвратительный или прошедший конец.
ValueType operator*() const
возвращает текущий элемент в последовательности.
<extract<ValueType>(this->ob);
>
friend bool operator==(stl_input_iterator const& lhs, stl_input_iterator const& rhs)
Возвращается истинным, если оба итератора являются уважительными или если оба итератора являются прошедшими, ложными в противном случае.
<(lhs.ob==object())==(rhs.ob==object())
>
friend bool operator!=(stl_input_iterator const& lhs, stl_input_iterator const& rhs)
Возвращается ложно, если оба итератора являются уважительными или если оба итератора являются прошедшими, истинно иначе.
<!(lhs
==rhs)
>
#include <boost/python/object.hpp> #include <boost/python/stl_iterator.hpp> #include <list> using namespace boost::python; std::list<int> sequence_to_int_list(object const& ob) { stl_input_iterator<int> begin(ob), end; return std::list<int>(begin, end); }
Статья boost/python/stl_iterator.hpp раздела Boost.Python Reference Manual Chapter 2. High Level Components может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Chapter 2. High Level Components ::
реклама |