Шаблон:Архитектурная акустика/Реализация/IteratorAdapterConditional body: различия между версиями
Перейти к навигации
Перейти к поиску
(Новая страница: «<source lang="cpp"> template <class _BaseIterator, class _Predicate, class _IsDeref> class IteratorAdapterConditional; </source> {{class template paramlist begin}…») |
|||
Строка 5: | Строка 5: | ||
{{class template paramlist begin}} | {{class template paramlist begin}} | ||
{{class template paramlist add|_BaseIterator|Тип преобразуемого адаптером итератора. Должен удовлетворять требованиям {{cpp_concept|ForwardIterator}}.}} | {{class template paramlist add|_BaseIterator|Тип преобразуемого адаптером итератора. Должен удовлетворять требованиям {{cpp_concept|ForwardIterator}}.}} | ||
{{class template paramlist add|_Predicate|Тип предиката, при перечислении осуществляющего проверку условия | {{class template paramlist add|_Predicate|Тип предиката, при перечислении осуществляющего проверку условия остановки переходов. Предикат должен принимать единственный параметр, который может быть: | ||
* итератором типа <tt>_BaseIterator</tt>, непосредственно адаптируемым к типу {{arch_ac_ref|IteratorAdapterConditional}} или | * итератором типа <tt>_BaseIterator</tt>, непосредственно адаптируемым к типу {{arch_ac_ref|IteratorAdapterConditional}} или | ||
* итератором типа <source lang="cpp" inline>typename adapted_iterator<_BaseIterator>::type</source>, который адаптируется цепочкой адаптеров, в которой последним адаптером является данная специализация {{arch_ac_ref|IteratorAdapterConditional}} - например типом <tt>some_iterator</tt> в цепочке преобразований <source lang="cpp" inline>IteratorAdapterConditional<IteratorAdapterForStep<...<some_iterator>...>></source>, или | * итератором типа <source lang="cpp" inline>typename adapted_iterator<_BaseIterator>::type</source>, который адаптируется цепочкой адаптеров, в которой последним адаптером является данная специализация {{arch_ac_ref|IteratorAdapterConditional}} - например типом <tt>some_iterator</tt> в цепочке преобразований <source lang="cpp" inline>IteratorAdapterConditional<IteratorAdapterForStep<...<some_iterator>...>></source>, или | ||
* значением элемента, связанного с итератором, типа <tt>value_type</tt> - за исключением случаев, когда тип значения неявно преобразуем к любому из итераторов-адаптеров в цепочке. | * значением элемента, связанного с итератором, типа <tt>value_type</tt> - за исключением случаев, когда тип значения неявно преобразуем к любому из итераторов-адаптеров в цепочке. | ||
Вызов предиката должен быть однозначен и соответствовать только одному из вышеупомянутых случаев, поэтому в качестве предиката не допускается использование шаблонов или обобщенных лямбда-выражений.}} | Вызов предиката должен быть однозначен и соответствовать только одному из вышеупомянутых случаев, поэтому в качестве предиката не допускается использование шаблонов или обобщенных лямбда-выражений. | ||
{{class template paramlist add|_IsDeref|Предикат, проверяющий возможность перехода итератором <tt>_BaseIterator</tt> к следующему элементу путем инкремента.}} | |||
Также предикат должен удовлетворять требованиям {{cpp_concept|CopyConstructible}} и {{cpp_concept|CopyAssignable}}.}} | |||
{{class template paramlist add|_IsDeref|Предикат, проверяющий возможность перехода итератором <tt>_BaseIterator</tt> к следующему элементу путем инкремента. Тип должен удовлетворять требованиям {{cpp_concept|CopyConstructible}} и {{cpp_concept|CopyAssignable}}.}} | |||
{{class template paramlist end}} | {{class template paramlist end}} | ||
{{type_list_title|access=public}} | {{type_list_title|access=public}} |
Текущая версия на 02:02, 9 января 2018
template <class _BaseIterator, class _Predicate, class _IsDeref>
class IteratorAdapterConditional;
_BaseIterator | Тип преобразуемого адаптером итератора. Должен удовлетворять требованиям ForwardIterator. |
_Predicate | Тип предиката, при перечислении осуществляющего проверку условия остановки переходов. Предикат должен принимать единственный параметр, который может быть:
Вызов предиката должен быть однозначен и соответствовать только одному из вышеупомянутых случаев, поэтому в качестве предиката не допускается использование шаблонов или обобщенных лямбда-выражений. Также предикат должен удовлетворять требованиям CopyConstructible и CopyAssignable. |
_IsDeref | Предикат, проверяющий возможность перехода итератором _BaseIterator к следующему элементу путем инкремента. Тип должен удовлетворять требованиям CopyConstructible и CopyAssignable. |
Открытые типы
Тип | Описание |
---|---|
iterator | Тип _BaseIterator. |
iterator_category | Категория итератора. Тип эквивалентен std::forward_iterator_tag. |
value_type | Тип typename std::iterator_traits<iterator>::value_type . |
reference | Тип typename std::iterator_traits<iterator>::reference . |
pointer | Тип typename std::iterator_traits<iterator>::pointer . |
difference_type | Тип typename std::iterator_traits<iterator>::difference_type . |
predicate | Тип предиката необходимости перехода. Тип эквивалентен _Predicate. |
iterator_predicate | Тип предиката возможности перехода. Тип эквивалентен _IsDeref. |
Открытые методы
Метод | Описание |
---|---|
(конструкторы) | Конструкторы класса IteratorAdapterConditional. |
operator= | Операторы присваивания. |
operator* | Оператор разыменовывания. |
operator-> | Оператор косвенного доступа к элементам. |
operator++ | Переход итератора к следующему элементу, удовлетворяющему предикату IteratorAdapterConditional::predicate. |
operator== | Проверка на эквивалентность итераторов. |
operator!= | Проверка на неэквивалентность итераторов. |
base | Возвращает адаптируемый итератор в текущей позиции. |
adaptation_base | Возвращает текущий корневой адаптированный, возможно цепочкой адаптеров, итератор. |