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

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
(Новая страница: «<source lang="cpp"> template <class _OuterIterator, class _InnerIterator = →‎См. описание: > class IteratorAdapter2D; </source> {{class template paramli…»)
 
 
(не показано 7 промежуточных версий этого же участника)
Строка 4: Строка 4:
</source>
</source>
{{class template paramlist begin}}
{{class template paramlist begin}}
{{class template paramlist add|_OuterIterator|Тип внешнего итератора (второе измерение).}}
{{class template paramlist add|_OuterIterator|Тип внешнего итератора (первое измерение). Тип <source lang="cpp" inline>typename std::iterator_traits<_OuterIterator>::value_type</source> (см. [http://en.cppreference.com/w/cpp/iterator/iterator_traits std::iterator_traits]) должен удовлетворять требованиям {{cpp_concept|Container}}.}}
{{class template paramlist add|_InnerIterator|Тип вложенного итератора (первое измерение). По умолчанию тип определяется следующим образом.
{{class template paramlist add|_InnerIterator|Тип вложенного итератора (второе измерение). По умолчанию тип определяется следующим образом.


Если тип <tt>_OuterIterator</tt> является обратным итератором, т.е. является специализацией шаблонов [http://en.cppreference.com/w/cpp/iterator/reverse_iterator std::reverse_iterator] или [https://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_column_reverse_iterator.html Chusov::Math::MatrixColumnReverseIterator], то тип <tt>_InnerIterator</tt> по умолчанию является типом возвращаемого значения метода <tt>rbegin</tt> (без параметров) класса <tt>_OuterIterator</tt>.
Если тип <tt>_OuterIterator</tt> является обратным итератором, т.е. является специализацией шаблонов [http://en.cppreference.com/w/cpp/iterator/reverse_iterator std::reverse_iterator] или [https://www.chusov.org/doxygen/class_chusov_1_1_math_1_1_matrix_column_reverse_iterator.html Chusov::Math::MatrixColumnReverseIterator], то тип <tt>_InnerIterator</tt> по умолчанию является типом возвращаемого значения метода <tt>rbegin</tt> (без параметров) класса <tt>_OuterIterator</tt>.
Строка 18: Строка 18:
{{type_list_add|Архитектурная акустика/Реализация/IteratorAdapter2D::outer_iterator|Тип <tt>_OuterIterator</tt>.}}
{{type_list_add|Архитектурная акустика/Реализация/IteratorAdapter2D::outer_iterator|Тип <tt>_OuterIterator</tt>.}}
{{type_list_add|Архитектурная акустика/Реализация/IteratorAdapter2D::inner_iterator|Тип <tt>_InnerIterator</tt>.}}
{{type_list_add|Архитектурная акустика/Реализация/IteratorAdapter2D::inner_iterator|Тип <tt>_InnerIterator</tt>.}}
{{type_list_add|Архитектурная акустика/Реализация/IteratorAdapter2D::iterator_category|Тип итератора. Эквивалентен <source lang="cpp">std::common_type_t<
{{type_list_add|Архитектурная акустика/Реализация/IteratorAdapter2D::iterator_category|[http://en.cppreference.com/w/cpp/iterator#Iterator_categories Категория] итератора. Эквивалентен <source lang="cpp">std::common_type_t<
     typename std::iterator_traits<outer_iterator>::iterator_category,
     typename std::iterator_traits<outer_iterator>::iterator_category,
     typename std::iterator_traits<inner_iterator>::iterator_category
     typename std::iterator_traits<inner_iterator>::iterator_category
></source>.}}
></source>}}
{{type_list_add|Архитектурная акустика/Реализация/IteratorAdapter2D::value_type|Тип <source lang="cpp" inline>stypename std::iterator_traits<inner_iterator>::value_type></source>.}}
{{type_list_add|Архитектурная акустика/Реализация/IteratorAdapter2D::value_type|Тип <source lang="cpp" inline>typename std::iterator_traits<inner_iterator>::value_type</source>.}}
{{type_list_add|Архитектурная акустика/Реализация/IteratorAdapter2D::reference|Тип <source lang="cpp" inline>stypename std::iterator_traits<inner_iterator>::reference></source>.}}
{{type_list_add|Архитектурная акустика/Реализация/IteratorAdapter2D::reference|Тип <source lang="cpp" inline>typename std::iterator_traits<inner_iterator>::reference</source>.}}
{{type_list_add|Архитектурная акустика/Реализация/IteratorAdapter2D::pointer|Тип <source lang="cpp" inline>stypename std::iterator_traits<inner_iterator>::pointer></source>.}}
{{type_list_add|Архитектурная акустика/Реализация/IteratorAdapter2D::pointer|Тип <source lang="cpp" inline>typename std::iterator_traits<inner_iterator>::pointer</source>.}}
{{type_list_add|Архитектурная акустика/Реализация/IteratorAdapter2D::difference_type|Тип разницы между позициями итератора. Эквивалентен <source lang="cpp">std::common_type_t<
{{type_list_add|Архитектурная акустика/Реализация/IteratorAdapter2D::difference_type|Тип разницы между позициями итератора. Эквивалентен <source lang="cpp">std::common_type_t<
     typename std::iterator_traits<outer_iterator>::difference_type,
     typename std::iterator_traits<outer_iterator>::difference_type,
     typename std::iterator_traits<inner_iterator>::difference_type
     typename std::iterator_traits<inner_iterator>::difference_type
></source>.}}
></source>}}
{{type_list_end}}
{{type_list_end}}
{{method_list_title|access=public}}
{{method_list_title|access=public}}
Строка 46: Строка 46:
{{method_list_subtitle|Методы, определенные, если тип iterator_category также задает двунаправленный итератор.}}
{{method_list_subtitle|Методы, определенные, если тип iterator_category также задает двунаправленный итератор.}}
{{method_list_begin}}
{{method_list_begin}}
{{method_list_add|Архитектурная акустика/Реализация/IteratorAdapter2D::operator++}}
{{method_list_add|Архитектурная акустика/Реализация/IteratorAdapter2D::operator--}}
{{method_list_add|Архитектурная акустика/Реализация/IteratorAdapter2D::operator--}}
{{method_list_end}}
{{method_list_end}}
Строка 61: Строка 60:
{{method_list_add|Архитектурная акустика/Реализация/IteratorAdapter2D::operator>{{=}}}}
{{method_list_add|Архитектурная акустика/Реализация/IteratorAdapter2D::operator>{{=}}}}
{{method_list_end}}
{{method_list_end}}
{{method_list_title|access=protected}}
{{method_list_subtitle|Методы, определенные, если тип iterator_category задает прямой итератор.}}
{{method_list_begin}}
{{method_list_add|Архитектурная акустика/Реализация/IteratorAdapter2D::get_it2}}
{{method_list_add|Архитектурная акустика/Реализация/IteratorAdapter2D::reset_it2}}
{{method_list_end}}
{{data_member_list_title|access=protected}}
{{data_member_list_subtitle|Члены, определенные, если тип iterator_category задает прямой итератор.}}
{{data_member_list_begin}}
{{data_member_list_add|Архитектурная акустика/Реализация/IteratorAdapter2D::m_it1}}
{{data_member_list_end}}
{{nonmember_fn_list_title}}
{{nonmember_fn_list_subtitle|Если тип iterator_category задает итератор с произвольным доступом.}}
{{nonmember_fn_list_begin}}
{{nonmember_fn_list_add|operator+|Архитектурная акустика/Реализация/IteratorAdapter2D}}
{{nonmember_fn_list_end}}

Текущая версия на 07:39, 8 января 2018

template <class _OuterIterator, class _InnerIterator = /*См. описание*/>
class IteratorAdapter2D;
_OuterIteratorТип внешнего итератора (первое измерение). Тип typename std::iterator_traits<_OuterIterator>::value_type (см. std::iterator_traits) должен удовлетворять требованиям Container.
_InnerIteratorТип вложенного итератора (второе измерение). По умолчанию тип определяется следующим образом.

Если тип _OuterIterator является обратным итератором, т.е. является специализацией шаблонов std::reverse_iterator или Chusov::Math::MatrixColumnReverseIterator, то тип _InnerIterator по умолчанию является типом возвращаемого значения метода rbegin (без параметров) класса _OuterIterator.

В противном случае тип _InnerIterator по умолчанию является типом возвращаемого значения метода begin (без параметров) класса _OuterIterator.

Если соответствующий метод не реализуется, то использование типа по умолчанию для _InnerIterator приводит к жесткой ошибке компиляции (без SFINAE).
Открытые типы
ТипОписание
outer_iteratorТип _OuterIterator.
inner_iteratorТип _InnerIterator.
iterator_categoryКатегория итератора. Эквивалентен
std::common_type_t<
    typename std::iterator_traits<outer_iterator>::iterator_category,
    typename std::iterator_traits<inner_iterator>::iterator_category
>
value_typeТип typename std::iterator_traits<inner_iterator>::value_type.
referenceТип typename std::iterator_traits<inner_iterator>::reference.
pointerТип typename std::iterator_traits<inner_iterator>::pointer.
difference_typeТип разницы между позициями итератора. Эквивалентен
std::common_type_t<
    typename std::iterator_traits<outer_iterator>::difference_type,
    typename std::iterator_traits<inner_iterator>::difference_type
>
Открытые методы
Методы, определенные, если тип iterator_category задает прямой итератор.
МетодОписание
(конструкторы)Конструкторы класса IteratorAdapter2D.
(деструктор)Деструктор класса IteratorAdapter2D.
operator=Операторы присваивания с копированием и перемещением.
operator*Оператор разыменовывания.
operator->Оператор косвенного доступа к элементам.
operator++Сдвиг позиции итератора на единицу от начала.
operator==Проверка на эквивалентность итераторов.
operator!=Проверка на неэквивалентность итераторов.
outer_baseДоступ к итератору в первом измерении, в соответствии с текущей позицией IteratorAdapter2D.
inner_baseДоступ к итератору во втором измерении, в соответствии с текущей позицией IteratorAdapter2D.
Методы, определенные, если тип iterator_category также задает двунаправленный итератор.
МетодОписание
operator--Сдвиг позиции итератора на единицу к началу.
Методы, определенные, если тип iterator_category также задает итератор с произвольным доступом.
МетодОписание
operator+=Изменение позиции итератора на заданное число элементов к концу.
operator-=Изменение позиции итератора на заданное число элементов к началу.
operator+Возвращает итератор, сдвинутый к концу относительно текущего на заданное число позиций.
operator-Возвращает итератор, сдвинутый к началу относительно текущего на заданное число позиций, либо расстояние между двумя итераторами.
operator[]Возвращает элемент, находящийся на заданном расстоянии относительно позиции итератора.
operator<Проверка на то, чтобы текущий итератор находился ближе к началу контейнера по сравнению с итератором, который указан параметром.
operator<=Проверка на то, чтобы текущий итератор находился ближе к началу контейнера по сравнению с итератором, который указан параметром, либо совпадал с ним.
operator>Проверка на то, чтобы текущий итератор находился дальше от начала контейнера по сравнению с итератором, который указан параметром.
operator>=Проверка на то, чтобы текущий итератор находился дальше от начала контейнера по сравнению с итератором, который указан параметром, либо совпадал с ним.
Защищенные методы
Методы, определенные, если тип iterator_category задает прямой итератор.
МетодОписание
get_it2Возвращает указатель на реализацию итератора IteratorAdapter2D::inner_iterator в текущей позиции или нулевой адрес, или, если текущая позиция итератора в первом измерении либо позиция итератора во втором измерении не соответствуют действительному элементу контейнера.
reset_it2Устанавливает новое состояние для итератора во втором измерении.
Защищенные данные
Члены, определенные, если тип iterator_category задает прямой итератор.
Элемент данныхОписание
m_it1Текущий итератор в первом измерении.
Функции, не являющиеся частью определения класса
Если тип iterator_category задает итератор с произвольным доступом.
ФункцияОписание
operator+Создает копию указанного итератора IteratorAdapter2D, сдвинутую относительно него на заданное число позиций.