Шаблон:Архитектурная акустика/Реализация/IteratorAdapterConditional body: различия между версиями

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
(Новая страница: «<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Тип предиката, при перечислении осуществляющего проверку условия остановки переходов. Предикат должен принимать единственный параметр, который может быть:
  • итератором типа _BaseIterator, непосредственно адаптируемым к типу IteratorAdapterConditional или
  • итератором типа typename adapted_iterator<_BaseIterator>::type, который адаптируется цепочкой адаптеров, в которой последним адаптером является данная специализация IteratorAdapterConditional - например типом some_iterator в цепочке преобразований IteratorAdapterConditional<IteratorAdapterForStep<...<some_iterator>...>>, или
  • значением элемента, связанного с итератором, типа value_type - за исключением случаев, когда тип значения неявно преобразуем к любому из итераторов-адаптеров в цепочке.

Вызов предиката должен быть однозначен и соответствовать только одному из вышеупомянутых случаев, поэтому в качестве предиката не допускается использование шаблонов или обобщенных лямбда-выражений.

Также предикат должен удовлетворять требованиям 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Возвращает текущий корневой адаптированный, возможно цепочкой адаптеров, итератор.