Шаблон:Архитектурная акустика/Реализация/IteratorAdapter2D body: различия между версиями
Перейти к навигации
Перейти к поиску
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 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>. | ||
Строка 22: | Строка 22: | ||
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>typename std::iterator_traits<inner_iterator>::value_type | {{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>typename std::iterator_traits<inner_iterator>::reference | {{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>typename std::iterator_traits<inner_iterator>::pointer | {{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, | ||
Строка 60: | Строка 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, сдвинутую относительно него на заданное число позиций. |